5/19(火)〜21(木) の学習ログです(主にC言語)

こんばんは、安藤です。

いつもありがとうございます。

今回も深夜の更新となってしまいました。

 

自粛が少し解除(意味としては緩和だよね)に向かう中に、今になって海外ドラマに興味が出始めてて、なんとういうタイミングだ!!と思う今日この頃です。

やりたいことが山積みなので、どこかで1度「やりたいことの断捨離」をしなきゃかもと思っています。 

 

さて、今日も学習ログを残していきます。 

今回から漫画「王様達ヴァインキング」からの学びも載せていきます。

こちらの漫画、マジやべーっす。最高です(o^^o)

 

 

2020.5.19(火) 

C言語(web記事「苦しんで覚えるC言語」)
●配列
配列とは、同じ型の変数を複数宣言し、番号によって管理することで、複数のデータを一括りにして取り扱えるようにする仕組み。
配列として宣言された変数は、1つ1つが番号によって区別される。
番号を適当に切り替えながら使うことで、100個でも1000個でも大量の変数を同じように使うことがきる。

●配列の宣言
型名 配列名[要素数];
Int array[100];

型名とは、変数の型と同じ。
配列名とは、配列全体の名前のこと。
要素とは、作られる変数の数のこと。ここで指定した数だけ指定した型の変数が作られる。
ここで数として指定できるのは整数値のみ。

配列の取り扱いは、配列名に番号をつけることを除けば変数と同じ。
番号は0番から始まる。

 

◎王様達ヴァインキングより
ファイアーウォールのことなど、セキュリティの凄腕の人の凄さを感じれて楽しい。
ウィルスは機械語で人には読めないようになっているのか。ふむふむ。

 

 

2020.5.20(水) 

C言語(web記事「苦しんで覚えるC言語」)
●配列の使い方
配列も変数と同じように宣言と同時に初期化することができる。
型名 配列名[要素数]={0番の数値,1番の数値,2番目の数値,・・・};

{ }で囲んだ中に順番を区切って数値を並べる。
全てを指定する必要はないので、数値の個数は配列の要素数以下にする。
配列の要素数よりも少ない場合、残りには全て0が代入される。

・全要素の表示
配列の全ての要素を表示するために、for文のループを使うことができる。
このような使い方ができることこそ配列の最大の利点。

・要素数を求める
C言語には、変数や配列のサイズを求める「sizeof(サイズオブ)」演算子がある。
sizeof(変数や配列名)

sizeofには、( )をつけてもつかなくてもよい。

●memcpy関数
memcpy関数を使うと、for文を使わずにコピーができる。
memcpy(コピー先配列名,コピー元配列名,配列全体のサイズ)

memcpy関数を使う場合は、
#inclide <memory.h>
この記述が必要。

 

 

◎読書「まつもとゆきひろ コードの世界 スーパー・プログラマになる14の思考法」
「継承」とは、似た部分をくくり出す仕掛け。
具体的には、継承はあるクラスの性質を受け継いだ新しいクラスを作る機能。
元になったクラスのことを「スーパークラス」、新しく作られたクラスを「サブクラス」という。
サブクラスは、スーパークラスの全てを受け継いでいるし、新しいメソッドも追加できる。
既存のクラスを利用して新しいクラスを作り出すことを「差分プログラミング」

抽象化によって共通部分をスーパークラスとしてくくり出すことと、既存のクラスを利用して新しいクラスを作ることは同じ手法の両面のようなもので、前者をボトムアップ・アプローチ、後者をトプダウン・アプローチという。

Rubyをはじめ多くの言語では1つのクラスに対して、1つのスーパークラスが決まる。このような継承を「単純継承」と呼ぶ。

C++Lispなど複数のスーパークラスを持つことができる言語もたくさんある。
そのような継承を「多重継承」と呼ぶ。

JavaScriptは、継承のない言語。

ブラックボックスの例として電卓がある。
キー入力後、計算結果が液晶に表示されるが、内部の処理は分からない。もしかしたら小人がそろばんをはじいているかも!

 

 

 

2020.5.21(木) 

C言語(web記事「苦しんで覚えるC言語」)
●文字の扱い方
文字列を扱う変数
C言語には、文字列を記録する変数がないのよ。
文字列用の変数がないのは、文字列が特殊な性質を持つため。
文字列は事前に何文字になるのか予想できない。つまり必要とされるメモリのサイズが分からない。
このような事情からC言語には文字列用の変数がない。

C言語以外の多くの言語は、文字列変数を用意している。
①メモリを固定的に確保(文字列が制限される上、メモリが無駄になる)
古いBASICやPASCAL
②メモリを可変的に確保(速度が遅くなる)
Javaなど。C++にも似た機能がある。

C言語プログラマーが自由な方法を選べるので柔軟。

・文字を扱うには
文字列変数はないが、文字変数はある。
文字は必ず1文字なので、変数で扱うことができる。

C言語では、文字変数として、「char(キャラ)型」が用意されている。
char型の変数には、1文字を記録しておくことができる。
文字は「” “」で囲うことで表現する。

%c指定子を使えば、printf関数で表示することができる。

・全角文字はNG
char型で記憶できる文字の種類は最大で255種類が限界。
この問題を解決する手段として、「wchar_t型」がある。

文字コード
コンピュータで使われる文字に1対1で対応する番号をつけて表現する方法。
ASCIIコードという規格では半角のアルファベットや記号が割り当てられている。
日本語を扱えるコードとして、JIS、シフトJISEUCが使われている、世界中の言語を扱えるコードとして、Unicodeが普及している。

char型変数に文字を代入するのは、文字コードの番号を代入しているだけ。
つまり、普通の整数型と同じ。

ということで、コンピュータでは全ての文字は番号で表示されており、char型はその番号を記録しておくに過ぎないということ。

 

 

◎読書「まつもとゆきひろ コードの世界 スーパー・プログラマになる14の思考法」
単一継承はスーパークラスを1つしか持てない。現実では人は会社員であると同時に父親であったり、プログラマであると同時にライターであったりする。

多重継承の優れた特徴2つ
・単一継承の自然な拡張
・複数のクラスから機能を取り込むことができる

多重継承は単一継承ができることなら何でも実現できる。しかし、クラスの関係が複雑になりがちという欠点がある。

 

 

今回はこれで以上です。

どんなことも覚悟を定めて、できることをコツコツ継続していく。

不平不満は燃料にして謙虚に自分のできることに集中する。

自分のことも周りのことも大切にする。

人の話に耳を傾けて寄り添っていく。自分の意見は相手のことを聞いた後に。

 

人生が動く時って必ず周りの人たちがサポートしてくれていて、土台になってくれているから。これらのことは本当に大事だと思う。

 

そんなこんなで、プログラミング頑張ります。

それでは、また。