第4回 コンピュータと数(変数宣言)とLinux上でのファイルの入出力
本日の目的
コンピュータに数字を覚えてもらう方法を学ぶ。
覚えた数字を表示される方法を学ぶ
技術的には
(1)コンピュータの数の扱い方の簡単なものと変数宣言を学ぶ:intとdouble
(2)printf("%d",i); printf("%lf",x);
(3)Unix コマンドでファイルの扱い方: リダイレクト「>」と「cat」
キーワード:変数,変数宣言,変数型
http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20020624/1/
を参考。
コンピュータの5大要素
コンピュータを整理すると下のようになる。
http://e-tech.life.hyogo-u.ac.jp/kyouzai/kyouzairon/godai.html
この中でコンピュータに特に特徴的なのは、計算機構とメモリー、それはただの電気回路。
今回は、記憶装置をC言語を使って使うためのお話。
(前回は出力装置をつかうためのお話)
CPUが計算装置
メモリーが短期記憶装置(ここの使い方)
そもそもコンピュータは数字をどんなものとして考えているの?
コンピュータはただの電気回路
(要するに小学校でならった下の絵みたいなの)
http://xn--mdyo4np5m.com/wp-content/uploads/2012/05/ph12.jpg
電気回路で数字をあらわす。
コンピュータの整数と実数と2進数
(この節は忘れても大丈夫)
0と1で情報を表す。
コンピュータは0,1だけですべての情報を表します。
なぜ、0,1だけで表すかというかというと、
(1)電気回路等のonとoffなど区別しやすいからです。
(2)あいまいさが少なくなる。例えば、雑音が乗っている環境での3と4の区別大変
2進数と0と1だけで整数で表す。
0と1だけで整数を表すことができる。
(1)0と1
0と1だけで実数を表す(今回はパス、次回へ)
浮動小数点、
2進数では、0.1はあらわせない!
C言語をつかってコンピュータに数字を覚えてもらう。
概要
おおざっぱにいうと
(1)コンピュータにこれに記憶してねと記憶の場所を教えてあげる(変数宣言)。
(2)その箱に数字をいれる。 (i=3)
(3)それを使う。
という手順。
コンピュータの記憶場所はマンションみたいなもの。
覚えるためには部屋と表札が必要、部屋を与えて表札、必要な部屋の大きさ
教えてあげるのが変数宣言。
変数
数値や記憶を保存する場所
整数 test4_1.c
#include<stdio.h> int main(){ int i; //int の意味は後ろのintとdoubleの節を参照; int j; i=3; j=5; printf("iは%d\nです",i); printf("jは%d\nです",j); }
コンパイルして実行してみましょう。
gcc test4_1.c -o test4_1.out
エラーがなくなるまで、プログラムの修正、コンパイルを繰り返し、なくなったら、
実行
./test4_1.out
そうすると,
iは3です。
jは5です。
と表示されるはずです。。3と5を記憶して,後に使えました。
実数(浮動小数点数)
#include<stdio.h> int main(){ double x; x=3.12; printf("xは%lf\nです",x); }
インデント=タブでの行頭を忘れずに。
int とdouble
この節のはじめに書いたように、整数と実数はかなり違います。
そこで、コンピュータにその違いをはじめに教えてあげる必要がある。
そのため上のプログラムのように、C言語では、プログラムの一番はじめに、int とdouble とか、この種類の変数をこの名前で使いますよとコンピュータに教えてあげています。
この変数の種類のことを「変数の型」もしくは「型」とよび、このようにどのような変数を使うかを
教えてあげることを「変数宣言」といいます(くわしいことはさらにあとで)。ほかにも文字型とか文字列型などがあります。
%dと%lf
printfの文字列のなかで使うと2つめの変数(引数)にで示す数字に順番に置き換わる。
とりあえず、整数のときは%d,実数(double 型)の場合は%lfを覚えてください。
(そこそこ奥が深いので、詳しくは 参照)。
int 型->%d
double 型 -> %lf
2つの整数
#include<stdio.h> int main(){ int i,j; i=3; j=5; printf("iは%dです jは%dです\n",i,j); }
足し算と引き算をしてみる
i+j は足し算。
i-j は引き算
#include<stdio.h> int main(){ int i,j; i=3; j=5; printf("iは%dです jは%dです i+jは%dです i-jは%dです \n",i,j,i+j,i-j); }
コンピュータの5大要素
http://e-tech.life.hyogo-u.ac.jp/kyouzai/kyouzairon/godai.html
CPU
http://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/komaba_joho/gen2/slides/6-computer.pdf
あと、1000000の実験とか
私メモ
#include
int main(){
int i=10000000000
int j=0;
int k=0;
k=i+j;
printf("k=%d\nです",k);
}
整数をいれなくてよい。
セミコロン:
文字
UTF8で保存。」ダブルコーテーションの話。
int i;
int j;int i,j;
i,j->a,bに変えたほうが色々な変数を使う例になる。
某氏のメモ
プログラミング第4回
なぜ0と1なのか?
⇒有りか無ししかないから。(曖昧ではない)
2進数は片手で16までいける!コード一行毎に最後に;(セミコロン)を入れないとエラーになる。
【;】は【。】と同じ意味。【コードについて】
int(整数で使う用の部屋を用意して!)int i
iという整数を使いますよ。
int j
jという整数を使いますよ。
【i】や【j】の場所にはアルファベットならなんでもOK。\nは改行
printf("iは%d\nです",i);
iの中身を%dに置き換えなさい!表示する中身は""の間。
足し算、引き算もできる!
宣言していないアルファベットは読み込めない。
intは32bit
32個0と1の空間を確保することを意味する。
実質31個分の桁。一個は+とか-で使用している。2の31乗まで数字が使える。
【名言】暗黙の~