ぷろぐらみんぐ!

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

配列、特にサイズと要素数 C#9

こんにちは!

やっぱり3月は忙しい時期ですね。

新生活の準備や卒業式などやることがたくさんあります。

大変ですが頑張っていきましょう。

 

今日は複数の変数をまとめて扱うというところから始めていきます。

 

 

配列

  • 複数の変数をまとめて宣言する時は配列を使う。
  • 配列は次のようにして宣言、初期化する。

f:id:fujigg7:20170303223032p:plain

  • 配列名とは配列全体の名前のこと。
  • 素数とは作られる変数の数のこと。整数値のみ指定できる。
  • 素数よりも数値の個数が少ない場合、残りには0が代入される。
  • 素数は省略できる。省略した場合は数値の個数分だけ要素数が確保される。
  • 配列名に番号を付けるには下のようにする。

f:id:fujigg7:20170303222716p:plain

  • 番号は0から始まる。
  • 配列のすべての要素を表示するにはfor文が便利。
  • 変数や配列のサイズを求めるにはsizeof演算子を使う。
  • sizeof演算子は下のようにして使う。

f:id:fujigg7:20170303231941p:plain

  • sizeof演算子を使って配列の要素数を求めるには下のようにする。

f:id:fujigg7:20170303225606p:plain

  • 配列の要素を別の配列にコピーするにはmemcpy関数を使う。
  • memcpy関数は下のようにして使う。

f:id:fujigg7:20170303233505p:plain

 

新しく配列というものが出てきました。

sizeof演算子のところで、サイズと素数の違いが分からず少し躓いてしまいました。

ですのでsizeof演算子について調べ、まとめてみました。

 

素数とサイズ

素数とサイズというものはまったく別のものです。

サイズというのはメモリサイズの略みたいです。

メモリについてはまだ勉強していないのでサイズと表記したのだと思います。

 

これから要素数を求めていきます。

素数を求めるには、下のような式が必要です。

f:id:fujigg7:20170304000831p:plain

「配列array全体のサイズ / 配列arrayの要素1つ分のサイズ」という式になっています。

まず、個々の式を求めていきます。

配列のサイズは、「型のサイズ * 要素の個数」で求めることができます。

今はint型で、int型のサイズは4バイトです。

配列arrayはint型の配列で、3つの要素を持っています。

この時、配列array全体のサイズは、4 * 3 = 12、

今は要素の数が知りたいので、int型のサイズをなくす必要があります。

なので、配列の1つ分の要素で全体を割ります。

配列array[0]のサイズは、4 * 1 = 4 となります。

こうすると要素の数が求まるというわけです。

 

 

たぶんこんな感じだと思います。

サイズは容量ということでいいのでしょうか。

もし間違っていたらコメントなどで指摘していただけると助かります。

 

ここまで来たら練習問題です。 

f:id:fujigg7:20170304011312p:plain

逆順で表示するというところで少し考えましたが、解答見ずにできたのでよかったです。

簡単なことですが、考えて答えを出すのは楽しいですね。

長くなってきたので今日はここまでにしたいと思います。

 

それでは。

C言語で出てくる3種類の変数 C#8

こんにちは!

 

最近気づいたら1日中YouTubeを見てることがよくあります。

YouTubeは気を付けないと時間泥棒になりますね。

 

さて、今回はローカル変数の寿命というところからやっていこうと思います。

 

 ローカル変数とグローバル変数

  • ブロック内で宣言された変数はローカル変数といい、そのブロック内でしか使えない。
  • { }で囲まれた文をブロック文という。(if文の使い方 #5 - ぷろぐらみんぐ!参照)
  • 関数内でも { } を使うことによってブロックを作ることができる。
  • 変数が使える範囲と、その変数の寿命を決定する仕組みをスコープという。
  • 関数外で宣言された変数をグローバル変数という。
  • グローバル変数はプログラム内のすべての関数で使用することができる。
  • グローバル変数はプログラム開始時に自動で初期化される。
  • グローバル変数とローカル変数が同名の時はローカル変数が優先される。
  • 関数内で変数を宣言するときに、型名の前にstaticを付けると静的なローカル変数を宣言することができる。
  • 静的なローカル変数とは、宣言された関数内でのみ使えて、プログラムが終了するまで残る変数のことである。

 

話がややこしくなってきました。

これは文章を読むよりプログラムを見たほうが理解しやすいと思います。

 

f:id:fujigg7:20170222194807p:plain

 

一通り理解出来たら練習問題です。

 

今回の練習問題は難易度易しめですね。

一応全問正解できました。

 

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

本当はもっと進みたいんですけど時間がない。。。

YouTubeもほどほどにしないと。。。

 

それでは。

ループ関数&自作関数 C#7

こんにちは!

 

Amazonでプログラミング・IT技術書フェアがやってますね。

www.amazon.co.jp

入門本などがたくさん半額になっていますが、全てkindle版だけみたいです。

※追記:終了しました。

 

電子書籍を利用したことがないのですが、技術書とかって見やすいんですかね。

 

機械学習に興味があるので、Pythonの入門本を買いました。

機械学習の入門本もあったのですが、さすがにまだ早すぎると思ったので買いませんでした。

f:id:fujigg7:20170218195619p:plain

それにしても技術書って結構値段するもんなんですね。

半額セールの時に一気に買っとくべきなのかな。

 

 

さて、今回は while文と、 do while文から勉強していきたいと思います。

 

それではまとめます。

while文、do while文

  • 回数が決まっているループをしたいときはfor文が最適。
  • ループを使って何回繰り返せばいいかを求めるときはwhile文が適している。
  • while文は下のようにして使う。

f:id:fujigg7:20170218201414p:plain

  • 一回処理を実行してから、回数が決まっていないループするときはdo while文を使う。
  • do while文は下のようにして使う。

f:id:fujigg7:20170218201724p:plain

  • do while文ではwhile (条件式)の後に;を付け忘れないように注意する。

 

C言語で出てくるループをする文はfor文、while文、do while文の3つだけらしいです。

それではwhile文を使って、最初に出てきたネズミ算のプログラムを書いてみます。

 

f:id:fujigg7:20170218203324p:plain

うーん見づらい。

桁数をそろえてもう一度実行。

f:id:fujigg7:20170218203743p:plain

 

いいね!

 

do while文は入力チェックの時によく使うらしいです。

サンプルプログラムを読んで納得したら、練習問題です。

 

f:id:fujigg7:20170218205109p:plain

 

出来ました。

これくらいならサクッと書けるようになってきました。

 

 

それでは先に進みます。

次は自作関数を作るというところを勉強していきます。

 

少し作りすぎな気もしますが、気にせずまとめていきます。

 

関数を作る

  • 以前に作成したプログラムを関数として再利用することを部品化という。
  • 関数は下のようにして作る。

 f:id:fujigg7:20170218215222p:plain

  • 仮引数とは関数宣言に書かれた引数の型と名前のこと。
  • 自作関数を他の関数でも使えるようにするためには、関数の形をプログラムの初めに書き並べて置く必要がある。そしてそれをプロトタイプ宣言という。
  • プロトタイプ宣言は下のようにして行う。

 f:id:fujigg7:20170317071245p:plain

  • 自作した関数をほかの関数内で使うときは下のようにする。

 f:id:fujigg7:20170317071458p:plain

  • 実引数とは自作関数を他の関数で使うときに渡す数値のこと。
  • return文には数値を返す機能があり、その数値を戻り値(関数値)という。
  • return文で変数に戻り値を格納するには下のようにする。

  f:id:fujigg7:20170218234535p:plain

  • 関数の戻り値を変数に代入するには下のようにする。

 f:id:fujigg7:20170218233544p:plain

  • 戻り値は1つしか返すことができない。

 

 

すごく難しくなってきました。

実引数やプロトタイプ宣言など、難しい単語を見ただけではよくわからないのでサンプルプログラムを書き写してみました。

 

f:id:fujigg7:20170218234908p:plain

なんとなくは分かりましたが書き慣れないと難しいですね。

これからたくさん書いていきたいと思います!

最後に練習問題です。

 

f:id:fujigg7:20170219000929p:plain

 

答えを見たらswitch文で書かれてました。

if - else文を使うと確かにややこしくなって少し読みづらいですね。

使い分けれるようにもっと頑張らないといけませんね。

 

f:id:fujigg7:20170219001902p:plain

 

というわけでswitch文でも書いてみました。

難しいですが、その分書き終わったときの達成感がすごいですね!

 

 

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

内容がだんだん難しくなってきました。

たくさんプログラムを書いて慣れていきたいですね。

 

それでは。