第6回 制御構造1 繰り返し (while 文)
- 本日覚えること
★Linux (1) > リダイレクト (画面出力をファイルに記録) (2) catコマンド (ファイルの内容を画面にだすコマンド) ★C言語 (3) while ループ (繰り返しの文)
- 前回までの復習
(1)int 整数 printf("%d\n"); (2)double 浮動小数点数 printf("%lf\n") (3)出力の順番は並び方
例:
test6_0.c
#include<stdio.h> int main(){ double a=1.2; int b=3; double c=3.0; printf("a=%lf,c=%lf,b=%d",a,c,b); retrun 0; }
移動(cd使う)
コンパイル
gcc test6_0.c -o test6_0.out
実行
./test6_0.out
出力:
a=1.2 c=3.0 b=3
- 今日の行うこと
-Linux: コマンド ファイルへの出力(リダイレクト>) と ファイルの内容の確認 -C言語:ループ文 -算数:平方根,ルート
Linuxのファイルへの書き出しとその出力を勉強します。
-
- 画面の結果へのファイルへの書き出しは「リダイレクト」とよばれる機能を使います。
画面の結果(例)
pwd
以下の例のように現在のどこのフォルダ(ディレクトリ)にいるかが画面に出力される.
/kutikomi/Adj/sikousakugo #なにが表示されるかは人によって変わる
次に以下のようにうつとファイルtmp.txtに出力を記録できる。
pwd > tmp.txt
いまwindowsのメモ帳等で、tmp.txtをみてみると、
2つ上で画面に表示されていた内容が表示されていることがわかる.
まとめると,
リダイレクト > : [コマンド > ファイル名] で コマンドの出力結果をファイル名を与えたファイルに出力できる。 上記のものをリダイレクトという.
次に、linux上で上記のファイルを表示する方法.
cat tmp.txt
ファイルの内容が表示される.
- 他の例 ($は打たない)
例1)ディレクトリのファイル一覧をtest2.txtに保存
$ls $ls > test2.txt $cat test2.txt
例2)これまでのコマンド履歴を保存
historyはこれまでのコマンドの履歴を出力するコマンド
$history $history > test3.txt $cat test3.txt
- 次にC言語
プログラムの基本は、繰り返しと分岐。
#include <stdio.h> int main(){ int i; i=1; while(i<=5){ printf("i=%d \n",i); i=i+1; } printf("おわり\n"); return 0; }
コンパイル
実行
出力
i=1
i=2
i=3
i=4
i=5
おわり
解説:
繰り返しはwhile文を使う。
(他はfor文がある)
while(条件){
繰り返しの内容
}
条件をみたすときに{...}で囲まれた内容を繰り返す.
上の例だと
条件:
i>=5 (iが5より小さければくりかえす)
繰り返しの内容:
//iの内容を表示する
printf("i=%d \n",i);
//iに1をたしてiに再び代入する
i=i+1;
コンピュータがやっていることを書くと,
★前処理
//最初にiを宣言
int i;
- >iを宣言
i=1
- >iに1を代入
★繰り返しループ突入
while(i<=5)で条件判定
i<=5 か? i=1なので5より小さい OK、{..}中を実行しよう.
//{..}内の実行へ
printf("i=%d",\n);
- > "i=1"と表示
i=i+1
- >iは1なので,i+1を計算すると2, それを再びiに代入する
//{..}内がおわったので条件判定へ
while(i<=5)で条件判定
i<=5 か? i=2なので5より小さい OK,{..}中を実行しよう.
printf("i=%d",\n);
- > "i=2"と表示
i=i+1
- >iは2なので,i+1を計算すると3, それを再びiに代入する
while(i<=5)で条件判定
i<=5 か? i=3なので5より小さい OK,{..}中を実行しよう.
printf("i=%d",\n);
- > "i=3"と表示
i=i+1
- >iは1なので,i+3を計算すると4, それを再びiに代入する
while(i<=5)で条件判定
i<=5 か? i=4なので5より小さい OK,{..}中を実行しよう.
printf("i=%d",\n);
- > "i=4"と表示
i=i+1
- >iは1なので,i+4を計算すると5, それを再びiに代入する
while(i<=5)で条件判定
i<=5 か? i=5なので5より小さい OK,{..}中を実行しよう.
printf("i=%d",\n);
- > "i=5"と表示
i=i+1
- >iは1なので,i+5を計算すると6, それを再びiに代入する
while(i<=5)で条件判定
i<=5 か? i=6なので5より大きい、条件を満たさない ,{..}の中を実行しない.
★括弧の後を実行
printf("おわり\n")
- >"おわり"と表示
- 問題1
1から100まで表示するプログラム
答え
#include <stdio.h> int main(){ int i; i=1; while(i<=100){ printf("i=%d \n",i); i=i+1; } printf("おわり\n"); return 0; }
- 問題2
1から100まで表示する3つ刻みに表示するプログラム
1,4,7,10,13,...みたいな感じ。。
答え
#include <stdio.h> int main(){ int i; i=1; while(i<=100){ printf("i=%d \n",i); i=i+3; } printf("おわり\n"); return 0; }
- 1から100までの平方根の表をつくって,ファイルに記録する.
test6_2.c
#include <stdio.h> #include <math.h> int main(){ int i; i=1; while(i<=100){ printf("iの平方根は %lf \n",i,sqrt(i)); i=i+1; } printf("おわり\n"); return 0; }
gcc test6_2.c -o test6_2.out
実行
./test6_2.out
出力
1の平方根は2
2の平方根は1.414
3の平方根は1.7320
4の平方根は2.000
5の平方根は2.2362
..
ファイルへ記録
./test6_2.out > heihoukon.txt
ファイルの内容の確認
cat heihoukon.txt
解説
#include
- >数学用のプログラム的なものをここにいれこむ。
- >数学の関数を使うときに使う.
printf("i=%d 平方根 %lf \n",i,sqrt(i));
- >sqrt(i) sqrt(値) 値の平方根を求める.
square(平方) root(根) -> sqrt
平方根って?
sqrt(N)は2回かける(2乗すると)とNになる数
例えば,sqrt(4)=2 なぜならば,2*2=4
例えば,sqrt(9)=3 なぜならば,3*3=9
例えば,sqrt(25)=5 なぜならば,5*5=25
例えば,sqrt(2)=1.414213..(無限に続く) なぜならば,1.4142*1.4142=2.0000
例えば,sqrt(3)=1.732058..(無限に続く) なぜならば,1.7320*1.7320=3.0000
http://denwade.jugem.jp/?eid=160 参照
- 問題3 (来週)
1から10までの和を求める。
上の具体例のように機械の動きをおってみる
#include <stdio.h> int main(){ int i; int sum; i=1; sum=0; while(i<=10){ printf("i=%d \n",i); i=i+1; sum=sum+i; } printf("%d\n",sum); return 0; }
C氏メモ
[2014/07/14 20:03:08] 移動方法→lsでのぼってsygdriveを探す cdでprogramフォルダまで移動 cygdrive→c→User→xxx→My*→program 整数の表示→%d 少数の表示→%lf (補足)小数点にはfloutとdobbleがある dobbleは表せる表示が倍 容量を節約したい場合はfloutを使用(今はあんまり関係ない) 【リダイレクト】 コマンド > ****.txt →表示したデータを指定ファイルに出力 例.pwd > test.txt ls > test2.txt 【キャンセル】 ctl + C 【データの出力】 gcc 入力ファイル -o 出力ファイル 【データの実行】 ./ファイル名 【While】 {}の中を繰り返す(条件から外れるまで) ・indentの仕方(while) ・iの平方根の間違え
B氏メモ
[2014/07/14 20:06:04 小数点を表すもの flout 浮動 メモリ節約したい人はflout double floutよりも多くケタを表せる。精度もいい。 pwd > test.txt 今書いてある情報をtest.txtに書き込みなさい というコマンド→リダイレクト history > test.txt 今までのコマンドの履歴をtest.txtに書き込みなさい cat test4.txt test4.txtに書いてある情報を出力しなさい 誤ったコマンドを打った際、止めたいときCtrl+C がキャンセル #include <stdio.h> 標準入出力の関数(stdio.h)の内容を書き出しなさい というコマンド #include <math.h> <math.h>の内容を書き出しなさい(数学系のコマンドを使うときに使う) スペースではなくタブで