プログラミング基礎覚え書き②(式と演算)

 ゴールデンウィーク突入!この千載一遇のチャンスでC言語を全クリする!!しかし、毎年思うんだけど、年度が始まってすぐ来るんだよな、ゴールデンウィーク・・・できればまだまだ頑張れるから、6月くらいまで繰り越しておきたいよね(^_^;)連休は超嬉しいけど、発進してすぐエンスト的な感じというか。だから5月病になるんだろうな(あと年度始めは学費払うから行楽にあてる金がない)。
 いや、でもしっかり休むけどね。最近気温のアップダウンがえげつなかったし・・・

 あ、あと今気づいたんだけど、ブログの仕様なのか、コード冒頭(include文)に必ず書かなければならない<stdio.h>が記事には表示されないので、本ブログのコードはその部分を書き足さないと機能しません!(´;ω;`)

参考文献:高橋麻奈著『やさしいC第5版』

式と演算
コンピュータは0で数字を割ると実行時にエラーとなりプログラムが停止するという最悪の事態になる。

四則演算の演算子は以下のとおり。
足し算:2+3 こたえ5
引き算:3-2 こたえ1
掛け算:2*2 こたえ4
割り算:6/3 こたえ2
割り算の余り:11%2 こたえ1


入力された二つの小数を使って四則演算するコード
小数なのでdouble型で宣言する。
入力時は%lfだが、出力時は小数点以下何桁まで出すか指定するのに注意(小数点以下3桁は%.3f)。

#include

int main(void)
{
double num1,num2,sum,hiku,kake,wari;

printf("実数1を入力\n");
scanf("%lf",&num1);

printf("実数2を入力\n");
scanf("%lf",&num2);


printf("%.3f+%.3f=%.3f\n",num1,num2,num1+num2);


printf("%.3f-%.3f=%.3f\n",num1,num2,num1-num2);


printf("%.3f*%.3f=%.3f\n",num1,num2,num1*num2);


printf("%.3f/%.3f=%.3f\n",num1,num2,num1/num2);


return 0;
}

三角形の面積を求めるコード
小数(厳密には浮動小数点数)の値で求めているので、変数はdoubleを用いる。
また小数を出力する場合は%dではなく、%fを用いる。
また%とfのあいだに.3などと数字を入れると、小数点以下3桁までで表示を打ち切ることができる。

#include

int main(void)
{
double teihen,takasa,menseki; //底辺、高さ、面積という3つの変数を宣言。

teihen=6.0;
takasa=3.0;
menseki=teihen*takasa/2; //数値、もしくは数式を代入。

printf("%f\n",menseki); // 出力。

return 0;
}

入力された半径から円の円周や面積を求めるコード

#include

int main(void) {

double r,c,s;

printf("円の半径を入力\n");
scanf("%lf",&r);

c=r*2*3.142;
printf("円  周=%.3f\n",c);

s=r*r*3.142;
printf("円の面積=%.3f\n",s);

return 0;
}

セルシウス温度をファーレンハイト温度に変換するコード
物理学概論が懐かしい・・・華氏(F)=(9÷5)×摂氏(C)+32なので・・・

#include

int main(void)
{

double C,F;

printf("摂氏を入力");

scanf("%lf",&C);

F=(9.0/5.0)*C+32.0;

printf("華氏になおすと%.2f",F);

return 0;
}

BMI指数を計算するコード
BMI=体重÷(身長×身長)であり、さらに身長はセンチではなくメートルに換算しないといけないため、単位を合わせるために分子を100×100倍する。

#include

int main(void)
{
double h,w,BMI;

printf("身長を入力\n");
scanf("%lf", &h);

printf("体重を入力\n");
scanf("%lf", &w);

BMI=w*10000/(h*h);

printf("%f\n",BMI);

return 0;
}

定期テストの平均点を求めるコード
テストの点数は整数(int型で宣言する)だが、平均点は小数(double型で宣言する)になるのでそこに注意する。

#include

int main(void)
{

int J,M,E,All;
double Av;

printf("国語の点数を入力\n");
scanf("%d", &J);

printf("数学の点数を入力\n");
scanf("%d", &M);

printf("英語の点数を入力\n");
scanf("%d", &E);

All=J+M+E;

printf("三科目合計=%d\n", All);

Av=All/3.0;
printf("三科目平均=%.2f\n",Av);

return 0;
}

2の平方根を計算する漸化式のコード
同じ計算を何度も繰り返すと、ちょっとずつ正確な値に収束していくタイプの計算。
Xに2を加えた数をXで割り、その数を更に2で割ることを繰り返すと、ヒトヨヒトヨニヒトミゴロに接近する。

#include

int main(void)
{
double x = 1.0;

x = (x + 2.0 / x) / 2.0;
printf("x=%.18f\n",x);
x = (x + 2.0 / x) / 2.0;
printf("x=%.18f\n",x);
x = (x + 2.0 / x) / 2.0;
printf("x=%.18f\n",x);
x = (x + 2.0 / x) / 2.0;
printf("x=%.18f\n",x);
x = (x + 2.0 / x) / 2.0;
printf("x=%.18f\n",x);
x = (x + 2.0 / x) / 2.0;
printf("x=%.18f\n",x);

return 0;
}

シフト演算子
ビットの桁の位置位置を左右にずらす(シフトする)ことができる演算子。
変数<<1 は変数を2倍(2の1乗)
変数<<3 は変数を8倍 (2の3乗)することができる。

#include

int main(void)
{
int num;
printf("整数を入力:");
scanf("%d", &num);

printf("入力値の10倍は:%d\n", (num<<1) + (num<<3));
// ※(num<<1)=2倍と(num<<3)=8倍を足して10倍にしている。

return 0;
}

ライフゲーム
イギリスの数学者コンウェイが1970年代に考案し、一時期流行ったシミュレーションプログラム。
オセロ盤のひとつのマスをセル(細胞)として、周囲のセルの状況によってそのセルの生死が決定するというルール。50行ほどの単純なコードだが、各セルは時間経過によってまるで生き物のようなアクティブな振る舞いをする。

命題
正しい(トゥルー)か誤り(フォールス)かが明確な文(平叙文)や式のこと。
日本の首都は東京である、みたいな○×クイズ的な文が命題と考えて良い。
疑問文や感嘆文、命令文といった曖昧な奴はダメ。

関係演算子
左辺と右辺の関係を表す演算子。
①== 左辺と右辺は等しい。
②!= 左辺と右辺は等しくない。
③> 左辺は右辺よりも大きい。
④>= 左辺は右辺よりも大きいか等しい。
⑤< 左辺は右辺よりも小さい。
⑥<= 左辺は右辺よりも小さいか等しい。


10+20は30かどうかを判定するコード
正しかったら1、誤りだったら0として表示される。

#include

int main(void) {

int i,j,k,l,m;

printf("整数iを入力\n");
scanf("%d" ,&i);

printf("整数iを入力\n");
scanf("%d" ,&j);

printf("整数iを入力\n");
scanf("%d" ,&k);

l=(i+j == k);
printf("条件式: 10+20 == 30 の値は%dです\n",l);

m=(i+j != k);
printf("条件式: 10+20 != 30 の値は%dです\n",m);

return 0;
}
Calendar
<< August 2020 >>
SunMonTueWedThuFriSat
      1
2345678
9101112131415
16171819202122
23242526272829
3031
search this site.
tags
archives
recent comment
recent trackback
others
にほんブログ村 科学ブログへ にほんブログ村 科学ブログ 恐竜へ カウンター
admin
  • 管理者ページ
  • 記事を書く
  • ログアウト