第3回のメニュー

目的

簡単な変数の取り扱いと簡単の入出力とcatとリダイレクトを学ぶ。
なんでプログラミン言語が必要なの。
き介護


覚えること

(1)linux関連: cat,リダイレクト記号「 >」
(2)C言語関連: printf("%d\n",i), int型,scanf?

前回の復習

(1)以下をサクラエディタでつくり、programディレクトリにtest1.cとして保存

例題1)helloworld!と表示するプログラム  test1.c

#include<stdio.h> /*お約束で書くいつか説明*/

int main(){

 printf("hello world\n"); /*\nは改行記号*/
 return 0;

}

#きちんとインデントすること。

スペースのところは、タブにおきかえる。

うまくタブをつかうことでプログラムをみやすく!

#/*...*/に囲まれた文字はコメントです。プログラムをコンパイルするときには無視されます。
人間があとでみてわかりやすいようにいれておきます。

(2)cygwinを起動し,ファイルを保存したディレクトリまで移動。
ヒント1: cd pwd ls を使う。 一つ上のフォルダは cd ..
ヒント2:ウインドウズのc\は /cygdriveにある。

(3)コンパイルする。

コンピュータが直接読める言葉は0,1で書かれて人間が直観的理解できないので、それを人間が理解しやすいように置き換えたのがプログラミング言語

  • 実行ファイルとは:プログラムをコンピュータが直接実行できる命令(機械語)がかかれたファイル。

gcc test1.c -o test1.out

コンパイルコマンドgcc

#gcc プログラム -o 出力ファイル名
スペースに注意。0でなくてoオー

#さぁ、どんなエラーがでたかな。
#エラーとかでればそのエラーについてソースコードを修正して、
コンパイルを繰り返す。いつかなにもでなくなるはず。そしたら、次のステップへ。
#実行ファイルができてるかlsコマンドで確認してみましょう。


(4)実行する

./test1.out

実行:./実行ファイル名 で機械語に翻訳されたプログラムを実行する

変数をつかってみる

変数とは値をいれる箱のこと

(1)以下のプログラムをサクラエディタで作り。test2.cに保存
/*...*/のコメントは無視してください。

#include<stdio.h> /*お約束で書く(いつか説明)*/
int main(){

 int i; /*変数の宣言  iっていう変数を使うよ用意して intはiは整数だよという意味 実数だったらdouble*/ 
 i=3; /*iに3を代入*/
 printf("アイは%d\n",i);  /*出力されるときには、 %dがiの値に置き換わる*/

 return 0; /*お約束で必ず書く (いつか説明)*/
}

(2)コンパイルして実行してみる。

gcc test2.c -o test2.out

エラーがなくなるまで、コンパイルソースコードの修正して保存を繰り返す。

ls

ls はそのディレクトリないのファイル一覧を表示するコマンド
として、一覧のなかに

test2.out

があったら(3)へ

(3)実行してみる

./test2.out

他の例

以下の例もコンパイルして実行してみましょう。
/*...*/のコメントは無視してください。
例1)iの表示を変えてみる。test4.c

#include<stdio.h> /*お約束で書く(いつか説明)*/
int main(){

 int i;
 i=3;
 printf("i=%d\n",i);  /*ここが違う 出力されるときには、 %dがiの値に置き換わる*/

 return 0; /*お約束で必ず書く (いつか説明)*/
}

例2)iを変えてみる test5.c

#include<stdio.h> /*お約束で書く(いつか説明)*/
int main(){

 int i;
 i=5; /ここが違う/
 printf("i=%d\n",i);
 printf("i is changed \n")
 i=3; 
 printf("i=%d\n",i); 

 return 0; /*お約束で必ず書く (いつか説明)*/
}

例3)置き換え test6.c

#include<stdio.h> /*お約束で書く(いつか説明)*/
int main(){

 int i;
 i=5; /ここが違う/
 printf("i=%d アイ=%d\n",i,i); /*2つ並べることもできる*/ 

 return 0; /*お約束で必ず書く (いつか説明)*/
}


例4) 2つの変数 test7.c

#include<stdio.h> /*お約束で書く(いつか説明)*/
int main(){

 int i; /*iという箱を用意*/
 int j; /*jという箱を用意*/
 i=3; /*iに3を代入*/
 j=5; /*jに5を代入*/
 printf("i=%d j=%d sum=%d \n",i,j,i+j); /*%dには順番にiとjとi+jが入る*/ 

 return 0; /*お約束で必ず書く (いつか説明)*/
}

例5) 問題 3つの変数でやってみましょう。test8.c
i=3;j=5;k=10として、3つの変数の積を求めるプログラム。
ちなみに多くのプログラミングで掛け算の記号は「*」です。

i+j iたすj
i*j iかけるj
i/j i割るj
i%j iをjでわった余り

#include<stdio.h> /*お約束で書く(いつか説明)*/
int main(){

 int i; /*iという箱を用意*/
 int j; /*jという箱を用意*/
 int k; /*kという箱を用意*/

 i=3; /*iに3を代入*/
 j=5; /*jに5を代入*/
 k=10; /*kに10を代入*/
 printf("i=%d j=%d k=%d prod=%d \n",i,j,i*j*k); /*%dには順番にiとjとkとi*j*kが入る*/ 

 return 0; /*お約束で必ず書く (いつか説明)*/
}

リダイレクト

表示したのをファイルに記録してみましょう。
リナックスでは「> ファイル名」で出力をファイルに書き起こすことができます。それがリダイレクト
といいます。

基本的には、コマンドの後ろに「 > ファイル名 」を付け加えるだけでOKです。

例えば

pwd 
pwd > tmp.txt 


でファイルtmp.txtのあるフォルダにいって中身をメモ帳やエディタでみてみると、、
pwdの出力内容がはいっていることがわかります。

他には、

ls 
ls > tmp2.txt 

ファイル tmp2.txtの内容をメモ帳やエディタでみてみると
lsの出力結果が入っていることがわかります。

ちなみにファイルの中身の確認は cat ファイル名 でもできます。

cat tmp1.txt
cat tmp2.txt 



第3回の実際

gccの使い方と機械語
コンピュータはなぜ0,1
printfの使い方
gcc と printf って感じ。。

勉強会メモ by 某氏

プログラミング第3回

コンピューターは0と1の言葉しか読み込まない。
And,or,notの3種類しか読み込まない。
GCC=GNUのCのコンパイラーという意味
GNUフリーソフトウェア財団

./~~~は読み込み
文字化けした場合はサクラエディタの保存時に「文字コード」を「UTF-8」で保存する。
gcc test1.c -o test.out ⇒コンパイル

Tabで寄せるテクニック

(1)プログラミン(コード)を書く。
(2)書いたコードをコンパイルする。
(3)Cygwinに表示させる。

機種依存文字に注意
http://support.biglobe.ne.jp/settei/mailer/em-guide_win.html