情報科学概論II(実習) 2回目
課題提出はTACTにログインして行うこと。
課題の提出〆切はTACTを確認すること。
講義資料
今日やること
-
C言語によるプログラミング 〜簡単なプログラムの作成と実行〜
下記サンプル(Sample-0〜Sample-3)を参考にして、課題2-1,2-2,2-3のプログラムをそれぞれ作成し、
そのソースコードをTACTの入力欄への記入、もしくは添付ファイルとして提出せよ。
(実際にコンパイル・実行してエラーのないことを確かめて おくこと。)
以下、コンパイルなどの作業はターミナル上で行う("%" は 入力促進記号 (コマンドプロンプト) を表す)。
ファイルの編集は emacsなどの適当なエディターを用いること。
Sample-0: コンパイルの仕方
コンパイルはターミナル(

または

)で行う。
% cc main0.c : 実行形式のファイルは a.out となる
あるいは
% cc -o j5main0 main0.c : 実行形式のファイルは j5main0 となる
Sample-1: 単純なC言語の例
プログラミングはemacs

を使って作成 (Sample-2,3も同様)
#include <stdio.h>
int main(void)
{
printf("study of c-programming. \n");
return 0;
}
Sample-2: 四則計算等
#include <stdio.h>
int main(void)
{
int a=5,b=2,c;
float f=3.1;
c = sizeof(int);
printf("int is %d\n",c);
printf("(a,b,f) = (%d, %d, %f)\n",a,b,f);
printf(" a + b = %d , a * f = %f \n", a+b, a*f);
return 0;
}
Sample-3: キーボードから 10 進の整数を読み込んで,画面に表示する.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char buf[50];
int i;
printf("please input signed integer i = ");
fgets(buf,sizeof(buf),stdin);
if (sscanf(buf,"%d",&i) != 1) {
fputs("input error\n", stderr);
exit(-1);
}
printf("signed integer i = %d\n",i);
return 0;
}
================================================
注:1. fgets+sscanfによる読み込み: 詳細は講義ノートを参照せよ
2. 書式指定文字列 (printf(), sscanf() などで使う。)
%d 整数
%s 文字列
%f 小数点数
%lf 倍精度少数点数 (sscanf() などで)
3. &i : 変数 i の address (memory 上の位置)をあらわす。
課題2-1
以下の要素を含むCのプログラムを作成せよ.(Sample-1 参照)
- "Report: Lesson 2-1" という注釈行 (comment) が入っていること.
- 標準入出力関数を用いるための header file (stdio.h)を読み込む preprocessor command (#include ...) を含むこと.
- 3行分のメッセージ(内容は何でも良い)を画面に出力する機能を持っていること.
課題2-2
sizeof 演算子を用いて,以下の各種の変数のサイズを,順に調べる(表示する) プログラムを作れ.
(Sample-2参照)
(sizeof(char) = 1 Byte. という体裁で6行表示させよ。)
char : short int : int : unsigned int : float : double
課題2-3
キーボード から整数値のkpc(キロパーセク)を入力し、それを km(キロメートル)に変換して表示するプログラムをつくれ。(Sample-2,3参照)
pc(パーセク)は天文学でよく使われる長さの単位である。星を地球から観測するときに、地球の公転運動により天球上での星の位置が変化する。この変化による最大離角の半分(年周視差)が1秒角であるとき、この星と地球の距離が1pcである。地球の太陽に対する公転半径が1.496 x 10
11m 程度であることを考慮して計算すると、大体1pc=3.086 x 10
16mと求められる。
また、大きな数字を表す際,例えば 2 x 10
10 は 2.0e10 と書けば良い(指数表記)。print文などでの書き出しの際、%fの代わりに%eとすると指数表記で書き出せる。