コンピュータサイエンス入門覚え書き②

参考文献:電子学園出版局『情報処理基礎講座コンピュータシステムの基礎』

論理演算
0と1の2つの値(論理値)で足したりかけたりをすること。論理値を用いた演算はブール代数と言う。

①OR(論理和)
AとBどちらかが少なくとも1の時、演算結果は1。

②AND(論理積)
AとBの両方が1の時だけ、演算結果は1。

③NOT(論理否定)
0の時は1、1の時は0とあまのじゃくなことをすること。

④EOR(排他的論理和)
エクスクルーシブOR。AとBのどちらか一方が1のときだけ1。つまりどちらも1の場合は0となる。

⑤NOR
NOTとORを組み合わせた演算。AとBどちらかが少なくとも1の時、演算結果は0。

⑥NAND
NOTとANDを組み合わせた演算。AとBの両方が1の時だけ、演算結果は0。

⑦一致回路
AとBがおなじ論理値(0と0、1と1)の場合に1。

⑧フリップフロップ回路
セット、リセットの信号が来るまで、0または1の状態で待機する回路。
つまり情報記憶回路で、コンピュータでは1ビットの情報を記憶する。

半加算器
とどのつまり、コンピュータはこのようなスイッチの組み合わせで演算を行っているのである(ただ電気信号に反応しているだけで、別にう~んと考えて計算しているわけではない)。
例えば、二つのAND回路と、一つのOR回路とNOT回路を組み合わせると、二つの数の足し算ができるようになる。これを半加算器という。
半加算器には二つの入口AとB、二つの出口SとCがある。

OR回路
AとBのどちらかがONだった場合、答えは01なので、答えの出力を担当するSに信号を送る。

AND回路①
AとBのどちらもONだった場合、答えは10となり桁が繰り上がるので、繰り上がりを担当するCに信号を送る。

NOT回路
AND回路がどちらもONだった場合、答えは10となり一桁目は0になるので、Sへの信号を切る。
AND回路がどちらもOFF、もしくはどっちかがONだった場合は、答えは01なのでSに信号を送る。

AND回路②
出口Sの門番で、OR回路とNOT回路がつながっている。
ORとNOTのどちらもONの場合、答えは1なのでSに信号を送る。
それ以外は、答えは0、もしくは10で繰り上がりなので、Sへの信号を切る。

この半加算器を複数組み合わせることで、数ビットの計算ができるようになる。

メモリ
記憶装置はビットデータを電圧の度合いによって記憶できる記憶素子から構成されている。
記憶素子は半導体が用いられているが、いくつか種類がある。

ICメモリ
ICとはインテグレーテッド・サーキットの略で、集積回路のこと。
数ミリのシリコンチップに、トランジスタ(信号の波形は変えずに電気の強さを変える素子)、抵抗器、コンデンサ(電気をためる)、ダイオード(電気の流れを整える)などの素子を組み込んで配線した物。
回路の集積度合いによって、SSI、MSI、LSI、ベリーLSI、ウルトラLSIなどがある。
小型で信頼度が高いわりに価格が安く、量産化ができるため、主流となっている。
ちなみに読み取りしかできない物をROM、読み取りもできて書き込みもできる物をRAMと言う。

ジョセフソン素子
鉛やニオブなどの金属の電極の間に絶縁シートをはさんだ素子。
この素子を-270℃前後まで冷やすと、絶縁シートの電気抵抗が0となり電流が流れる(ジョセフソン効果)。
いわゆる超伝導現象を利用した素子で、処理速度はシリコンの1000倍、消費電力もきわめて小さいため、高い集積化が可能である。ただ冷やさないとダメ。

ガリウムヒ素素子
シリコンの代わりにガリウムヒ素のクリスタルを使用したもの。結晶中の電子の移動速度を利用した物で、シリコンの5~6倍電子移動速度は速い。

HEMT素子
ヘムト素子と呼ぶ。ハイ・エレクトロン・モビリティ・トランジスタ(高電子移動)素子。
ガリウムヒ素素子のパワーアップバージョンで、ガリウムヒ素結晶にアルミニウムガリウムヒ素の層を重ねると、その境界面での電子移動度が液体窒素の温度-196℃で極めて大きくなる現象(シリコンの約50倍)を利用している。

言語プロセッサ(言語処理プログラム)
プログラムの作成は一般的に高級言語で書かれるが、これをコンピュータが解読できるかたち(機械語)にまで変換するためのプログラムのこと。
変換前のプログラムを原始プログラム(ソースプログラム)、変換後のプログラムを目的プログラム(オブジェクトプログラム)と呼ぶ。

マシン語
0と1のみで書かれた言語。最低級言語。

アセンブラ言語
アセンブリとは、ものを集めて組み立て作業をすること。
機械語を記号化して、ある程度プログラミングを容易にできるようにした言語。
とはいえ、人間よりはコンピュータ向けの言語。

高級言語の分類
人間が使う言葉に近いプログラム言語のこと。以下の4つがある。

①手続き型言語
命令を1つずつ記述し、それを順番に実行する。
FORTRANやBASIC、C言語など。

②関数型言語
関数の組み合わせを用いることで、バグの原因になりやすい代入文を極力使わないようにしている。LISPなど。

③論理型言語
問題を述語論理で記述するとそれがプログラムとして働く。人工知能の分野で利用。
Prologなど。

④オブジェクト指向型言語
データと手続き(メソッド)をセットにしたオブジェクトという単位でシステムを記述する。また、各オブジェクトにヒエラルキーをつけることで、システムの構築および管理がしやすく、システム開発に利用されている。
C++やJavaなど。

マークアップ言語
文字そのもの以外に文字の色やサイズを記述して、画面や印刷物の体裁を整える。

スクリプト言語(マクロ)
高級言語。ソフトウェアの実行を自動化するための言語。そのため機械語への翻訳を飛ばして、ソフトウェアがそのまま解釈できる。
javaスクリプトなど。エクセルなどの表計算ソフトではマクロと呼ばれる。

インタプリタ言語
アセンブラやコンパイラのようにソースコードを一括して翻訳するのではなく、1命令ごとに解読し実行していく言語。
そのため、プログラムをすべて完成させなくても実行ができる。しかし、処理速度はコンパイラ言語に劣る。
BASICなど。

データ処理
大きく分けて二つの方法がある。

バッチ処理
一括処理という意味。
会社のタイムカードのように、毎日の勤務状況を記録していき、月末にそれを一括処理するしくみ。
処理するデータが全て集まってから作業を行うため効率がよい。
しかし、その時々で状況が変わるような現象を把握する際には向かない。

リアルタイム処理
データの入力があったら即座に処理を行うこと。
銀行のATMや新幹線の座席予約のように、データ処理・データ更新の一連の処理手続きをオンラインで行う、オンライン・トランザクション処理や、ジェット旅客機の自動操縦といったあらかじめ設定された飛行経路のデータに沿って処理を行う、リアルタイム制御処理などがある。

ページング
メインメモリと仮想メモリ(外部記憶装置)の間で、ある程度の大きさに小分けされたデータ(ページ)をやりとりすること。
そのままではメインメモリが処理しきれない大きなプログラムを複数処理する場合に行う。

スラッシング
もうこれ以上ページをメインメモリに格納できなくなったら、格納されているどれかをページアウト(メインメモリから仮想メモリに移動させる)して、新たに処理したいページをページインする。これをページ置き換えアルゴリズムという。
このページ置き換えが頻繁に起こると、その置き換えにCPU時間が費やされてしまい、動かしたいユーザプログラムが止まってしまう。この現象をスラッシングという。

フラグメンテーション
断片化という意味。メモリの編集を繰り返すうちに、割り付けられない断片が多数できて、徐々にプロセスを格納するためのまとまったエリアが確保できなくなり、それがまた割り付けられないメモリの断片を生むといった悪循環のこと。
こういった無駄な空き領域を防ぐアルゴリズムには以下のようなものがある。

①最初適合アルゴリズム
最初にみつかったプロセスを格納できる空間を割り当てる。

②最適適合アルゴリズム
格納できる空間のうち最小の領域のものを割り当てる。

③最悪適合アルゴリズム
格納できる空間のうち最大の領域のものを割り当てる。かなりもったいない。なぜ考案されたのか。

ぱっと見て①が一番良い方法のような感じがするが、クヌースのシミュレーションによれば②が意外といいらしい。

デフラグメンテーション
通称デフラグ。フラグメンテーションが進行すると、ファイルの分割保存、OSの処理量増大等を招き、処理速度の低下、ディスクトラブルを誘発する。
そこで、デフラグソフトを使って、ディスク内のファイルを先頭から並べ直してファイルの分割状態を解消し連続した空き領域を増やすと、処理速度が改善したりする。

危機管理対策
自然を管理することはできない。これこそカオスの核心だよ。

フォールト・トレラント
失敗に寛容ということ。アクシデントは起こる物だと見越して対策を取ること。
対照的な2つのシステム、考え方がある。

①フェール・ソフト
システムの一部が故障しても全体はダウンさせず、性能が低下してでもある程度の処理は遂行するシステム。

②フェール・セーフ
システムの一部に故障や誤作動が起きた場合、システムの暴走を防ぐため全システムを停止させてしまうこと。信号機や原子炉がこれを採用している。

フォールト・アボイダンス
失敗を禁忌するということ。アクシデント(システム停止)は絶対あってはならないという考え方。
現実では、フォールト・トレラントとの両面作戦でシステム設計は行われている。

フール・プルーフ
バカによる使用を防ぐという意味。
正しい使い方でなければ動かないようにするという考え方。
例えば、ドアを開けたまま電子レンジはチンできない、ギアがパーキングに入ってないと車はエンジンがかからない、といったもの。

工作機械覚え書き

・・・オレは工業大学の学生じゃねえ!!!
安全第一※危険度は私の主観です。そしてどれも危険です。

糸ノコギリ(危険度☆☆)
木材を切断する電動ノコギリ。
糸のように細いノコギリを上下運動をする電動機に装着し、ステージに切断したい木材を乗せてノコに当てるのだが、綺麗に真っすぐ木材を押さないとノコが木材にはまって一緒にガタタタタとピストン運動をし大失敗する。そしてノコが折れる。
あと、けっこう振動が強いので木材が動かないようにしっかりと押さえないとやっぱりガタタタタ・・・小学生の図画工作でも用いるが、とどのつまり器用さと力がいる。使いこなせる小学生は立派だ。
切りたい形が複雑な場合は、中継地点に穴を開けると良い。

ベルトサンダー(危険度☆☆)
特別支援学級の作業の授業で使用したことがあるやつ。
サンダー感は特にないが、これは雷ではなくサンドペーパーのサンドから。
とどのつまり電動ヤスリ。高速で動くベルトコンベアにやすりが取り付けられており、このコンベアに木材を当てると、手動でやするのがバカらしくなるほど、あっさり、かつ、綺麗にやすれる。
しかし、みるみる削りカスが増殖するため、使用の際には掃除機が必須となる。あとマスクとメガネを絶対にする。
使用上の注意としては、ちゃんと作動するかを確認するため、スイッチを入れてしばらくは試運転をさせて様子を見ること。
ちなみに2つのコンベアの接合部のカバーを取り外すと、ベルトサンダの向きを変えることができる(縦に起こせる)。また、内部のベルトが切れた時も、ここを開く。
さらに、構造上ベルトコンベアの移動方向にしかやすれないので、移動方向と垂直に木材は動かさない。

ディスクグラインダー(危険度☆☆☆)
円盤状の砥石を高速回転させ、そこに加工物(金属)を当ててツルツルにする機械。
サビや塗装を剥ぐこともできる。
また、ディスクを切断用のものに変えると、加工物を切断することもできる。

卓上ボール盤(危険度☆☆☆☆)
金属や木材に任意の半径の穴を正確に開けたい場合に用いる、とどのつまりドリル。
ボール感は特にないが、これはオランダ語で「ドリル台」を表す言葉がボール・バンクで、それが訛ったもの。
ボール盤は大きな電動機を動力としているため、回転速度が速く、トルク(剛体の回転力)も強大であり、安全指導を徹底する必要がある(ちなみに、内部のベルトを変更して回転速度の設定を落とすとトルクは上がる)。
先生によっては、使用せずにキリで済ましたりもする。それが一番安全かもしれない。

安全面での留意点
①使用時は保護メガネをかけ、軍手はドリルに巻き込まれる危険性があるので絶対にしない!
②あと、これは工作機械全般に言えるが、電源のオンオフなどは作業をしている人のみが行い、部外者は工作機械には近づかない。
③また、金属に穴を開ける場合は摩擦熱でかなり熱くなるため注意する(場合によっては潤滑油を差す)。
直径3ミリ以下のドリルは折っかける危険性があるので、慎重に作業を行なう。

操作方法
①ドリルの電源プラグをコンセントから抜く。
②穴を開けたい場所にマジックで印をつける。
③金属に穴を開ける場合は、穴を開けたい場所にあらかじめポンチとハンマーでポンチ穴を開けて、ドリルがブレないようにする。
④ボール盤のテーブルのロックを外し、ハンドルを回して下に下げる。
⑤主軸のチャックにドリルを装着する。大きな穴を開けたい場合は、最初は細いドリルで小さな穴を開け、そのあともう一回り太いドリルに変更し、徐々に穴を広げていく。
⑥チャックキーという小さなハンドルになるバーを使って、全3箇所のチャックを完全に閉める。
⑦テーブルの上に金属万力もしくはクランプを乗っけて、穴を開けたい部品が動かないように完全に固定する。※糸ノコのように素手で加工物を押さえて使うのは絶対にダメ!!
⑧テーブルの高さを合わせる。
⑨保護メガネを付ける。
⑩スイッチがオフになっていることを確認してから、プラグをコンセントにさして、スイッチオンする。
⑪ドリルの回転が安定したら、右上の大きなハンドルを回してドリルをテーブルに接近させ、穴を開けていく。穴が貫通するときはドリルが噛みやすいので気合を入れる。
⑫穴があいたら電源をオフにし、プラグをコンセントから抜く。
⑬テーブルを掃除する。

旋盤(危険度☆☆☆☆)
ドリルではなく加工物(金属)の方を主軸に取り付け高速回転させ、そこに刃物(バイト)を当てることで切削する機械。とどのつまり超巨大電動鉛筆削り。ある学校にはある。
専門家の先生じゃない限り、中学校ではまず使用することはないと思う。金工は最近やらないしな。電車の車輪もこれで作っているという。
ボール盤同様、軍手は厳禁!!

プロクソン・ミニバンドソー(危険度☆☆☆☆☆)
木材、金属、プラスチック、なんでもプリンのように斬ってしまう恐るべきマシン(刃によってはガラスやセトモノもイケる)。
その名の通り、ダイヤモンドコーティングされたブレードがついたバンド(帯ノコ)を高速回転させることで加工物を切断する。そのため、帯ノコをテーブルと垂直に取り付けないと、まっすぐ切っているつもりでも徐々に向きが変わってしまうので注意(ドリフト現象)。
刃を変える場合はメガネを装着し、革手袋をして行なう。生徒は使用禁止!

情報社会論覚え書き

参考文献:安田雪著『パーソナルネットワーク―人のつながりがもたらすもの』

完全グラフ
ある集団があったとき、その構成員が全てお互いにつながりあっているネットワークを完全グラフという。
完全グラフの場合、各構成員のつながりの度合いに偏りがないため、ネットワークを分析することができず、手も足も出ないネットワークと呼ばれている。
また、構成員全てが孤立しているネットワークも同じ理由で分析ができない。
ちなみに、関係の度合いにバリエーションがない場合は、研究者は関係がある部分よりも、関係が欠如している部分に注目する。この部分にネットワークの力の源泉、つまり誰かが仲立ちとなってネットワークをつなぐ機会があると考えるのである。

コミュニティとモジュールの概念の違い
一定の地域の住民が連帯して作る共同体がコミュニティである。
ポーランドの社会学者バウマンは、コミュニティを「安心」すなわち「異なる他者の不在」と強く関連付けている。

一方で統計物理学者は、分析に不必要な要素(地縁や心理など)をネットワークから排除して、コミュニティを特定する方法を編み出している。
例えば、現実社会のコミュニティなら、町や都市といった空間概念や人口によって規模や様相を把握することができるが、ネット上にあるSNSなどのデータは不特定多数の人間の相互作用の連鎖であり、こういった膨大で複雑でネットワークは、いわばごちゃごちゃした巨大なスパゲッティの塊のようなもので、これをそのままの形で分析することは難しい。
そこで、SNSのデータなら、仲良しグループや共通性の高いグループといった、いわゆるクラスタで分けたり、企業のメールログなら、送受信者を部署ごとに分けたり、内容をテキストマイニング(文字列のデータから有用な情報を抽出すること)することでグループ解析を行なっている。つまり、膨大なネットワークをいくつかの細かい部分に分割することで、分析しやすくしているのである。

また、ネットワークのつながりの構造だけからコミュニティ抽出を行なう手法も開発されている。
いくつかの手法があるが、M・E・Jニューマンらが開発したモジュラリティの概念が一番重要だとされている。
彼らのコミュニティ抽出に典型的なのは、コミュニティのメンバー同士に、そのメンバーとそれ以外のメンバーよりも強い関係があるように、メンバーを分割することである。
言い換えれば、コミュニティ内部の関係性は、そのコミュニティと外部との関係性よりも強く、濃密・活発であると仮定して、その条件を満たすようにネットワークを切り分けて整理するのである。

この時抽出されたコミュニティはモジュールと呼ばれ、モジュールへの切り分けの適切さの評価指標はモジュラリティ(Q)と呼ばれている。
この評価指標は、モジュールの中の紐帯数を、同じ大きさで同じ紐帯数のランダムネットワークの期待値と比較することで得られ、この時の値を最大にするようにコミュニティ抽出をすべきだ(モジュールの関係性をランダムな状態のそれよりも可能な限り引き離す=アトランダムにする)という「最適化問題」が、ニューマンらのコミュニティ抽出問題である。

具体的なアプローチとしては、全員がバラバラの初期状態から段階的にコミュニティを作り上げ、Qの値を少しずつ近づけていくアルゴリズムなどが知られているが、ある種のネットワークでは紐帯数の分布などが原因で、適切にコミュニティ抽出ができない場合があることも分かっており、改善策や他の抽出方法の比較検討も進んでいる。
また、モジュールなどの概念を現実社会の現象に巧みに応用した仮説検証型の研究はほとんどなく、今後の応用研究が待たれる分野である。

ソーシャル・キャピタル
日本語に直訳すると「社会関係資本」といった意味になる。
社会学では、個々人に還元できない目に見えない社会的つながりによって生まれる強み、そのつながりを担う人にもたらすメリットだとされている。
ソーシャル・キャピタルには、マクロな公共財的視点から捉える立場と、ミクロな戦略的関係視点から捉える立場の2つの立場がある。

ソーシャル・キャピタルをマクロな視点から捉える代表的な論客がロバート・パットナムである。
パットナムは、ソーシャル・キャピタルを「個々人のつながり、すなわち社会的ネットワーク、およびそこから生じる互酬性と信頼性の規範」だと定義する。
つまり、人々の規範意識が高く、互いに信頼し合っているようなコミュニティでは、活力があり治安がよく、逆にひとりぼっちでボーリングをしているような孤独なコミュニティでは、日常生活の効率も悪く、都市も衰退するとパットナムは考えたのである。
現代人が生活経験全体に対して感じている不安感は、その生活基盤を直接的に破壊する大災害そのものよりも、その際に予想される政府や自治体の機能不全や、ご近所や家族・親戚からの支援の欠如に対するものなのである。

ソーシャル・キャピタルを公共財ではなく、ミクロな視点から捉える代表的な論客がナン・リンと、ロナルド・バートである。
リンは、個人的な資産や財力、学歴や資格といった資源とは別に、社会的なつながりを通じて到達できる資源について述べている。つまり、顔の広い人は、知り合いが少ない人に比べて、多くの情報や支援を得られるというわけである。
バートもミクロな関係が個人にもたらす利点に注目するが、リンと異なる点は、他者が持ち得ない関係を持つことによってもたらされる利益、相対的な有利さをソーシャル・キャピタルと定義している点である。

パットナムはこの主張に対して、個人的な影響量や友情が社会関係資本であるということだけならば、利己的な個人は適切な時間とエネルギーを投資し、それを獲得しようとすると予想できるが、社会関係資本は同時に外部性を有しておりコミュニティに広く影響するので、コストも利益も、つながりを生み出した人のみに全てが還元されるわけではない、と論じている。
つまり、つながりに富む個人であっても、つながりに乏しい社会に所属している場合は、そのパフォーマンスは劣るし、孤独な人でもつながりに富む社会に所属している場合は、その利益を受けることができる場合もあるということである。

もっといえば、ソーシャル・キャピタルは容易にフリーライドができる。例えば治安の良い町であれば、旅行者も安心して観光を楽しめるし、フリーライドされても簡単には減衰はしない。
一方、ミクロな視点のソーシャル・キャピタルは、匿名ではなく固有の人間関係によってもたらされているので、フリーライドはされにくく、しにくいのである。

弱い紐帯の強さ
人間関係のつながりは強い方が良い、社会関係が弱まっていくのは良いことではない、という近代社会の常識を覆したのが、グラノヴェターの論文である。
強い紐帯(ちゅうたい)が狭い範囲の人々を緊密に結びつけるのに対して、弱い紐帯はともすれば分断されがちな社会の、その内部の小さなコミュニティ同士を結びつける役割を果たし、情報収集と拡散においても、社会統合機能においても、実は優れた社会的機能を持っている(例えば群衆の安定に寄与)という内容である。

例えば、電話の発展型としてテレビ電話が想定されたが、現在では電話よりも相互制約が少ないメールや、匿名性の高いSNSでコミュニケーションを取る人の方が圧倒的に多い。そういった意味で、グラノヴェターの先見性は鋭く、論文発表から30年以上経ってもその輝きは失われていない。
これは、強い紐帯と弱い紐帯のどちらが優れているかという話ではなく、使い分けの話であり、例えば情報を届けたい人や、欲しい情報があらかじめ決まっている場合は、他者に適切な情報を伝えるのには適さない弱い紐帯よりも、強い紐帯を使った方が良い。

シェイプ・オブ・ウォーター

 「面白い度☆☆☆ 好き度☆☆」

 きみは中国料理店に行くたびに水槽の魚を逃がすのか。

 けんこさんオススメ映画『シェイプ・オブ・ウォーター』を900円で鑑賞。観客は自分の他にメガネの女性ひとり。レイトショーでわざわざデルトロ映画っていうのは、こやつ相当の手練だなってことで話しかけたら、案の定ただものじゃなかったw『パンズ・ラビリンス』はもちろん、『ヘルボーイ』もさらってて感服というか。映画ブロガーだったりしてね。

 で、自分の方はデルトロ感が強すぎて正直ついてけなかった(^_^;)魚人とのミュージカルとか、アデランス的な件とかこれはギャグでやってるのか?みたいなw
 庵野秀明とかもそうだけど、下手すれば自己満足というか、いや自己満足なんだよな、この人らはwこの人たちと同じオタク感性がある人には中毒的にハマるんだろうけどね。はまらない人は、なんかデートで終わりの見えない買い物付き合わされているような、そんな切なさだよね。

 ほいで、この監督は一点透視図法的な構図好きだよね。パンズ・ラビリンスでもやってた。これは『パディントン2』でも思ったんだけど、ちょっと構図を狭くとって、視線を低くすると、見慣れた風景もファンタジックに撮れていいよね。スペインの不幸な少女でも、南米の知能の高いクマでも、南米で神と崇められていた魚男でもいいけど、異形の者の視点というか。

 まあ、でもこの映画絶賛している人が女性ってのもなんとなくわかるんだよな。つまり、彼女らはもう同族の異性つーか、人間の男にうんざりしてるんだな~っていう(^_^;)
 乱暴で、下品で、汚くて、デリカシーなくて・・・もう人類に絶望した女性の最後のフロンティアが魚人とのアバンチュールなわけですよ。
 やべ~な、オレ達、魚人に負けるのか・・・みたいな。確かにオレ達増毛できねえしな・・・

 そう考えると、確かに女性ってあんまり異性の見た目って男ほど気にしてないのかなって思う。重要なのは、どれだけ自分を大切にしてくれるかどうかで、そこさえ満たせばあんまり種族は問わないっていうか。採用のポイントがやっぱ違うんだよね。
 実際に、イヌやネコにそれを(勝手に)見出して、アムールを感じている人もいそうだしな。

 つーかネコで思い出したけど、にゃんこが丸かじりされてたよなwあのシーンは新しかった。イヌやネコって、子ども以上に欧米の映画では生存するからな。
 ちょっとイヌを爆死させた帰ってきたウルトラマンとか狙ってるのかな、とかwあのエピソード(怪獣使いと少年)も孤独な少年と、社会に居場所のない異形の者との交流だしね。

 まあ、ああいうエログロ描写がなんともデルトロっていうか、だから、グロって別に残酷な描写をやればいいのかっていうとちがくて、なんというか、背徳感っていうか、インモラルな部分を人はグロいって感じるのかもしれない。
 それが残酷な描写なこともあるし、そこまで露骨なシーンじゃなくても、コンプライアンス的な規制で絶対守られてそうな、それこそネコみたいなのがあっさり殺されると、おおっ、そういう映画かって、見てる人は一気に不安になるというかね。この監督ほんとに頭おかしいぞ、みたいなw

プログラミング基礎覚え書き①(入出力の基本)

ノイマン型コンピュータ
メインメモリにプログラムを記憶させ(プログラム内蔵方式)、そのプログラムの命令を一つずつ取り出して実行し、その処理が終了したら次の命令に取りかかる(逐次制御方式)タイプのコンピュータ。アイディアのたたき台を作ったフォン・ノイマンに由来する。
現在のほとんどのコンピュータがこれに当たる。コンピュータといえばノイマン。ノイマンといえばコンピュータ。

逐次処理
プログラムは原則として先頭から順番に一文ずつ処理をされる。
手続き型コンピュータ言語は上の文から下の文へ逐次処理される。

コメント
プログラムの人間向けの解説。長いプログラムの場合はコメントがないと作者も忘れて意味不明になるので重要スキル。
//ではじめるか、/*と*/で挟む。こうするとコンピュータはそのあいだの文章は無視して飛ばす。

コマンドプロンプトのコマンド
昔はマウスがなかったため、ファイルの移動や操作も全てコマンドで行なっていた。
dir フォルダ表示
del フォルダ削除
mkdir メイク・ディレクトリでフォルダ作成
rmdir リムーヴ・ディレクトリでフォルダ移動
type フォルダの中身を表示

main関数
コマンドプロンプトを実行するための決まり文句。
int main(void)
{

なんらかの命令文
return 0;

}

このとき中かっこの中身をブロックと呼ぶ。
return 0; はここまで来たらコマンド終了という意味。

※ブロック内の各行末の;を忘れない!!

C言語
1972年にAT&Tベル研究所のデニス・リッチーが作ったプログラミング言語。
初心者がコンピュータを理解するのにいい言語。
分類上は機械語に近い低級言語(人間の言語に近いと高級言語。人類の意地を感じる)。
歴史が長く、多くのプログラミング言語に影響を与え、現在ブームのJava言語、JavaスクリプトなどはC言語の文法を参考に生まれた。

※スペースを表示させるようにするとバグがみつかりやすい。

プリプロセッサ命令
ソースコードをコンパイルする際の下処理の命令文。
コマンドプロンプトなどはなくても許してくれるが、C言語では最初の行に入ってないとコンパイルしてくれない。

最初に習うやつが、かの有名な

#include <ファイル名.h>

で、<>カッコの中の名前のファイル(※ヘッダファイル。拡張子は.h)を、コンパイルの際に読み込むことができる。
インクルードは含めるという意味。

ちなみによくあるstdio.hってなんやねんってかんじなんだけど、このファイルはC言語に標準装備されているファイルで、別に自分でスタジオを作る必要はない。
もっというと、スタジオという意味ではないらしい。
読み方は、スタンダードアイオードットエイチで、スタンダード・インプット/アウトプットの略らしい。
そして、このファイルがないと、C言語では文字表示のコード「printf」が機能しない。

文字列の改行
いくらエンターキーを押してもコンパイルしてくれない。
表示したい文字列の中に¥nを入れると、それ以降の文字列を次の行にしてくれる。

変換仕様
画面に文字列を出力したい際に用いるコードのこと。このコードのあとにカンマを打つと、カンマ以降の文字列がコンパイルの際に画面上に出力される。
%cは文字の表示。変換したい文字は''で挟む。
%dは整数の表示。変換したい数字はそのままでOK。
%fは小数の表示。変換したい小数はそのままでOK。
%sは文字列(2文字以上)の表示。変換したい文字列は""で挟む。

※使用例
printf("すきなこんだては「%s」です.¥n","ハンバーグ");

エスケープシーケンス
10進法の数字を8進法や16進法に直すのは非常に面倒くさいが、決まったコードを使うとコンパイルの際に10進数を自動的に8進数などに直してくれる。
10進数→8進数:数字の前に0をつける。014は16となる。
10進数→16進数:数字の前に0xをつける。0xFは15となる。


変数にはそれぞれタイプがあり、このタイプを決めてから好きな名前をつけることができる。
変数なので、ここに様々な入力値を代入することができる。
char・・・文字の表示。数値になおすと-128~127(1バイト)。
int・・・整数の表示。対応できる値は-2147483648~2147483647。
float・・・小数の表示。対応できる値は7桁まで(4バイト)。
double・・・小数の表示。対応できる値は15桁まで(8バイト)。

※ちなみに、整数×小数といった異なる型同士の演算の場合、コンピュータは精度の高い方に合わせて値を返す。
例えば、2×3.14は6ではなく、6.28を返す。

0.1(1÷10)を二進法で表した場合
1÷10は10進法では割り切れるが、2進法では無限小数になってしまうため、バイトが大きい型の方が正確な値を返すことができる。

#include

int main(void)
{

float F =0.1;
double D =0.1;

printf("float型は1÷10= %.18f\n",F); //「%.18f」の部分は18桁まで少数を出せという意味。
printf("double型は1÷10= %.18f",D);

return 0;

}

コンパイル結果
float型は1÷10=0.100000001490116119
double型は1÷10=0.100000000000000006
※つまりdouble型の方が精度が高い(0.1ジャストに近い)。

キーボードからの入力
具体例を見ちゃったほうが早いと思う。

#include

int main(void)
{

char ch1,ch2,ch3,ch4; //変数の宣言※変数の名前は別にchじゃなくてもなんでもいい。

scanf("%c",&ch1); //1文字目の入力
scanf("%c",&ch2); //2文字目の入力
scanf("%c",&ch3); //3文字目の入力
scanf("%c",&ch4); //4文字目の入力

printf("%c%c%c%c が入力されました。\n",ch1,ch2,ch3,ch4); //1~4文字の出力先。

return 0;

}

このように、「scanf」というコードを入れると、コンピュータは待機状態になり、キーボードからの入力ができるようになる。
ここでユーザーが好きな文字や数値を入力し、最後にエンターキーを押すと、その文字や数値が任意の場所に読み込まれ、printfによって出力される。
ちなみにscanfのコードでは、各対応変数の前にを入れなければならないのだが、これはよく忘れる。
Calendar
<< March 2024 >>
SunMonTueWedThuFriSat
     12
3456789
10111213141516
17181920212223
24252627282930
31
search this site.
tags
archives
recent comment
recent trackback
others
にほんブログ村 科学ブログへ にほんブログ村 科学ブログ 恐竜へ カウンター
admin
  • 管理者ページ
  • 記事を書く
  • ログアウト

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331