2019年6月の記事一覧
アルゴリズム
ある問題の解決方法を考え、あらわしたものを「アルゴリズム」といいます。
「こうすればこうなる」というような様々なアルゴリズムがいくつも確立されていますが、
ソフトウェア開発に限らず、ものごとに手順や解決手法は常に状況に応じて考えるべきことです。「どうしたらうまくいくか」手順を考えることがプログラミングです。
「こうすればこうなる」というような様々なアルゴリズムがいくつも確立されていますが、
ソフトウェア開発に限らず、ものごとに手順や解決手法は常に状況に応じて考えるべきことです。「どうしたらうまくいくか」手順を考えることがプログラミングです。
FAX
FAXは電話回線で画像データを送受信できるしくみです
取り込んだ画像をマス目で分解して、白から順に続く数を送ります。

たとえば、次のように、
□■■□■■□ → 1,2,1,2,1
■■■■■■■ → 0,7
□■■■■■□ → 1,5,1
□□■■■□□ → 2,3,2
□□□■□□□ → 3,1,3
のように数の羅列で送ることで、受信側も再構成でき、図案が受け取れます。
取り込んだ画像をマス目で分解して、白から順に続く数を送ります。
たとえば、次のように、
□■■□■■□ → 1,2,1,2,1
■■■■■■■ → 0,7
□■■■■■□ → 1,5,1
□□■■■□□ → 2,3,2
□□□■□□□ → 3,1,3
のように数の羅列で送ることで、受信側も再構成でき、図案が受け取れます。
10の乗数を表すSI接頭辞
大きな数を表す接頭辞(接頭語)としては、
k(キロ)=103=1000
M(メガ)=106=100000
G(ギガ)=109=1000000000
T(テラ)=1012=1000000000000
P(ペタ)=1015=1000000000000000
E(エクサ)=1018=1000000000000000000
・・・と続きます。
たとえば記憶容量2GByte(ギガバイト)なら
=2000MByte=2000000kByte=2000000000Byte
という換算になります。
1Byte1文字換算であれば20億文字が記録できます。
ちなみに新聞(日経新聞)は1日約15万文字らしいです
ちなみに新聞(日経新聞)は1日約15万文字らしいです
アクチュエータ
電気で回転動作するものをモータといいますが、電気で動作するものは、モータだけでなくいくつかの種類があり、電気で動作に変える素子を総称して「アクチュエータ」と呼びます。
コンピュータ(制御回路)と組み合わせることで、様々な動作が実現されます。
インクリメント,デクリメント
プログラミングで繰り返し処理の中でよく活用しますが、変数内の値を+1することを「インクリメント」、-1することを「デクリメント」といいます。
C言語では、変数xの場合
x++ または ++x (x=x+1 や x+=1 と同じ動作)
x-- または --x (x=x-1 や x-=1 と同じ動作)
演算子を、前に置くか後ろに置くかでも異なる結果が得られるので、様々な応用で活用が考えられます。
周波数とコンピュータの処理能力
パソコンの製品紹介などで「CPU:3.2GHz」など記載されることもありますが・・・
まず、[Hz]が一秒当たりに繰り返される波の単位になります。G(ギガ)は10億を意味して、例では一秒間に32億回ON/OFF動作が発生できるともいえます。
さまざまなコンピュータのしくみによって、「ON/OFF1セットでできること」や「ON/OFF4セットでできること」など様々ですが、同じCPUであれば周波数が高い方が処理が早いことは明確ですね。
惑わされないで
たとえば、もし、あなたに
「080-xxxx-zzzz のヤツは●●●●って壁に書いてあったから連絡したよ」
とSMS(ショートメール)が届いたら、え!?って不安になるかもしれません。
でも、落ち着いてよく考えて。
あなたの情報はそこには何も無い。何もかも特定されていない。
電話番号(またはメールアドレス)と個人情報は公開されて繋がっていない。
そのことを見極めて、対処を決して間違えないようにしましょう。
分岐
プログラミングの重要な要素のひとつに分岐があります。
たとえばイメージとして・・・
もし(所持金>価格)かつ(製品の機能>求める機能)
ならば、買う。
違えば、買わない。
変化させたい内容と、条件式を正しく組むことが必要です。
プログラミング経験を重ねても、ミスしがちな点の一つです。



字下げ
プログラミングだけでなく、文書を書くときでも重要ですが・・・
「字下げ」
のように「字下げ」が統一されていると、処理のまとまりや、流れが把握しやすくなります。
また、プログラミング言語によってはこの字下げによって処理を制御するので非常に重要です。
プログラミングを抜きにしても国語表現として段落や句読点をしっかりつけることも一緒です。
IPアドレス
IPアドレスは「192.168.0.1」などと、4つの数(オクテット)の区切りで表記されますが、
ネットワーク部(グループで同じにすべき番号)と、ホスト部(グループの中でユニークな番号)で構成されています。
多くの場合、サブネットマスクを用いて区別されます。
サブネットマスク「255.255.255.0」とすれば、IPアドレスの第3オクテットまでがネットワーク部、第4オクテットがホスト部になります。
何も考えずに設定して、ホスト部が重なってしまったりすると通信できないので、グループ内のアドレスをしっかり管理しておかなければなりません。
括弧(かっこ)の重要性
算数では + - より × ÷ から計算するように・・・
プログラミングでも計算だけでなく、様々な処理の書き方で、何から処理されるか
という優先順位があります。
まれにプログラミング言語によって変わることもあり、間違えやすいところです。
( )を効果的に使って、わかりやすく組み立てましょう
「3年2組ではない生徒」 の条件式の例
NOT 学年=3 AND 組=2
は、3年生ではない、たとえば1・2年生の2組の生徒になってしまう。
NOT((学年=3)AND(組=2))
プログラミングでも計算だけでなく、様々な処理の書き方で、何から処理されるか
という優先順位があります。
まれにプログラミング言語によって変わることもあり、間違えやすいところです。
( )を効果的に使って、わかりやすく組み立てましょう
「3年2組ではない生徒」 の条件式の例
NOT 学年=3 AND 組=2
は、3年生ではない、たとえば1・2年生の2組の生徒になってしまう。
NOT((学年=3)AND(組=2))
のように間違えないよう、明示しましょう。
ただし、さらに複雑に組み合わされたときの( )の重なりすぎにも注意
検索結果はいつもどれも本物?
問題です。
・ネット上で、多くが同じ意見で書かれていたとき、それが正しい?
・あることを調べるために検索した結果、一番はじめに出てきたものが、常に正しい内容?
情報源や、関係する事柄を正しく見極めるにはどうしたらよいでしょうか。
情報源や、関係する事柄を正しく見極めるにはどうしたらよいでしょうか。
変数
プログラミングする上で、おそらく最も重要な要素のひとつ。
「変数」
『コンピュータにやらせる』ためにも、その都度変化するものをとっておく「入れ物」が必要になります。

まずは、この「変数」というものを理解することが、コンピュータに様々な動作を実現させる第一歩かもしれません。
四則演算ほか
C言語だけではありませんが
四則演算をプログラミングする場合、算数・数学で使っていた記号の表記が異なります。
加算「+」は、「+」と、減算「ー」は、「-」、同じですが、
乗算「×」は、「*」、除算「÷」は、「/」、余りだけを算出する余算「%」など
言語によっては、さらにいくつかの算術演算子があります。
GUIとCUI
コンピュータなど、様々な操作をするときに、GUIとCUIがあります。
マウスやタッチなどでアイコンやウィンドウなどで操作する Graphical User Interface
キーボードでコマンドを打って操作する Character User Interface があります。

GUIがあたりまえになっていますが、いざというときやコマンド操作しかない場合もあるので、ぜひ知っておきましょう。
マウスやタッチなどでアイコンやウィンドウなどで操作する Graphical User Interface
キーボードでコマンドを打って操作する Character User Interface があります。
GUIがあたりまえになっていますが、いざというときやコマンド操作しかない場合もあるので、ぜひ知っておきましょう。
画面の原点
数学でグラフを描くときは、原点(x=0,y=0)の点から右方向と上方向に+(プラス)されていましたが・・・
コンピュータでは基本的に、原点(x=0,y=0)の点から右方向と下方向に+(プラス)になります。
ある場所から 横に動かしたければ、右はプラス、左ならマイナス
縦に動かしたければ、上はマイナス、下ならプラス という計算になります。
コンピュータでは基本的に、原点(x=0,y=0)の点から右方向と下方向に+(プラス)になります。
ある場所から 横に動かしたければ、右はプラス、左ならマイナス
縦に動かしたければ、上はマイナス、下ならプラス という計算になります。
文字の書き分け
プログラムコードでも、コンピュータの表示では見分けづらい文字が多くあるけれど、
プログラミング上では動作不能なミスになります。
, . (カンマ)と(ドット)
0 0 O o (ゼロ)と(オー)
I l 1 (大文字アイ)と(小文字エル)、(数字のイチ) など・・・
さらに記号もあるので、見分けがつかない文字が幾つもあります。
これは意識して書き分けや判別のための設定をしていきましょう
ファイルとフォルダ
スマホやタブレット端末のアイコン操作だけだと、意識することがないですが・・・
ソフトウェア開発をする上では、様々なファイルや、ファイルなどのまとめられたフォルダ(またはディレクトリ)の構造を把握しておかなければなりません。



プログラミングでは、ファイル名やフォルダ配置関係も意味がある場合が多いので、注意しましょう。
ソフトウェア開発をする上では、様々なファイルや、ファイルなどのまとめられたフォルダ(またはディレクトリ)の構造を把握しておかなければなりません。
プログラミングでは、ファイル名やフォルダ配置関係も意味がある場合が多いので、注意しましょう。
不等号記号
処理の分岐や繰り返しをしたい場合に、不等号を使って条件式を立てることがありますが、
まずは不等号の意味を把握して、逆向きにしないように、成立する範囲を正しく設定しましょう。
A < B (A小なりB、たとえばAの内容がBより小さければ関係は正しい。)
A > B (A大なりB)
A >= B (AはB以上)
A <= B (AはB以下)
ちなみに、変数Nをもとに条件が成立する間、繰り返されるとき・・・
変数Nの内容を0(ゼロ)から1づつ増やして10回継続するためには、どんな条件が必要?
N 10
半角文字と全角文字
プログラムコードを記述するとき、多くは半角英数字記号を使い、説明の部分のために日本語を使うことがあります。
入力の際、半角文字と全角文字の違いを把握しなければ、プログラムエラーの原因になります。特に表示に表れてこない「 」空白文字にも注意しましょう。
全角文字の例→:あいうえおABC123*+/「 」
半角文字の例→:ABC123*+/[ ]
入力の際、半角文字と全角文字の違いを把握しなければ、プログラムエラーの原因になります。特に表示に表れてこない「 」空白文字にも注意しましょう。
全角文字の例→:あいうえおABC123*+/「 」
半角文字の例→:ABC123*+/[ ]
トランジスタのスイッチ特性
トランジスタには増幅特性と、スイッチ特性があります。
スイッチ特性は、ベース電流のON/OFFで、コレクタとエミッタ間をON/OFFするように利用することができます。
電気で電気の流れを決められるので、センサと合わせて自動にすることにも使えます。
スイッチ特性は、ベース電流のON/OFFで、コレクタとエミッタ間をON/OFFするように利用することができます。
電気で電気の流れを決められるので、センサと合わせて自動にすることにも使えます。
ユーザアカウントとパスワードの管理
パスワードは、8文字以上 英数字含む・・・など案内されることも多いと思います。
自身でしか知らないことを含むなどして、自分だけが覚えやすい、推測されないものをつけましょう。

また、一つのユーザアカウントでも、様々なサービスと連携していることが多くなっています。
パスワードだけでなく登録しているサービスの状況にも気を払いましょう。
自身でしか知らないことを含むなどして、自分だけが覚えやすい、推測されないものをつけましょう。
また、一つのユーザアカウントでも、様々なサービスと連携していることが多くなっています。
パスワードだけでなく登録しているサービスの状況にも気を払いましょう。
ショートカットキー
キーボードショートカット(Windows環境)
文章や文字列、ファイルでも、選択している状態でキーボードの
「Ctrl」押しながら「C」でコピー(控えが取られるイメージ)
「Ctrl」押しながら「V」で貼り付け(控えたものから出力されるイメージ)
活用できると便利です。
文章や文字列、ファイルでも、選択している状態でキーボードの
「Ctrl」押しながら「C」でコピー(控えが取られるイメージ)
「Ctrl」押しながら「V」で貼り付け(控えたものから出力されるイメージ)
活用できると便利です。
オブジェクト指向における「継承」
『オブジェクト指向』では「継承」という概念で、オブジェクト(もの)を拡張することができます。
料理でいえば、『カレーの作り方』を「継承」して『カツカレーの作り方』をつくる場合、プログラミングでは、『カツカレーの作り方』としては、新たに{トンカツを揚げて、カレーにのせる}と追加するだけで、『カレーの作り方』の内容は継承元をそのまま活用することができるイメージです。
+ トンカツ = 
料理でいえば、『カレーの作り方』を「継承」して『カツカレーの作り方』をつくる場合、プログラミングでは、『カツカレーの作り方』としては、新たに{トンカツを揚げて、カレーにのせる}と追加するだけで、『カレーの作り方』の内容は継承元をそのまま活用することができるイメージです。
※カレーの変化はイラスト上の都合です
sizeof
C言語では、「sizeof 変数」で変数のメモリ上の大きさを確認できます。
例えば、int型の変数はコンピュータの環境によって大きさが変わるので、現環境で表現できる値の上限を確認するためにも使えます。
ビットとバイト
コンピュータは電気のON/OFFなどでデータをあらわしていますが、
その一つの単位を[bit](ビット)といい、8[bit]で1[Byte](バイト)といいます。
ひとつのコインの表裏、ランプの点灯/消灯 も同じく 1[bit]の情報ともいえます。
たとえば、さらにランプが多く集まると電光掲示板のように様々な情報が表現できますね。
その一つの単位を[bit](ビット)といい、8[bit]で1[Byte](バイト)といいます。
ひとつのコインの表裏、ランプの点灯/消灯 も同じく 1[bit]の情報ともいえます。
たとえば、さらにランプが多く集まると電光掲示板のように様々な情報が表現できますね。
RAND_MAX
疑似乱数を使う際、C言語では定数RAND_MAXを出力すると、いくつまでの値が生成されるかわかります。
また、ヘッダファイル(stdlib.h)内を直接みても・・・
#define RAND_MAX 0x7FFFU
このコードがある場合、16進数で7FFF(10進数で32767)までの値が出ることが確認できます。
また、ヘッダファイル(stdlib.h)内を直接みても・・・
#define RAND_MAX 0x7FFFU
このコードがある場合、16進数で7FFF(10進数で32767)までの値が出ることが確認できます。