プログラミング基礎覚え書き④(条件演算子と繰り返し文for)

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

論理演算子
コンピュータサイエンス入門でやったやつ。C言語でコードを書く場合は以下の記号を使う。

||(論理和)
AまたはB。

&&(論理積)
AかつB。

!(論理否定)
Aではない。

条件演算子
「変数 = (条件式) ? 条件が真のときに入れる値 : 条件が偽のときに入れる値 ;」で、if文を使わなくても場合分けをすることができる。

大人と子どもで料金が異なる場合のコード
ロープウェイの運賃は12歳未満なら子ども料金が適用されるというケース。

#include

int main(void)
{
int age,fee; //※feeは運賃という意味の英単語。

printf("年齢: ");
scanf("%d",&age);

fee = (age<12) ? 300:600; //12歳未満の運賃は300円、それ以外は600円という条件式。
printf("\nロープウェイ運賃は%d円です。\n",fee);

return 0;
}

携帯電話のパケット代を求めるコード
基本料は1パケット0.05円なのだが、上限額が月5000円までと決まっている場合。

#include

int main(void)
{
double packet,fee;

printf("パケット数: ");
scanf("%lf",&packet);

fee = 0.05 * packet;
fee = (fee>5000.0) ? 5000.0 : fee; //5000円以上の場合は請求額5000円で変わらず、5000円未満は0.05×パケット数で求めるという条件演算子。

printf("\n通信料は%.0f円です。\n",fee);

return 0;
}

たくさん買うとお得になるコード
リンゴの値段は1個50円だが、4個以上買うと1割引、7個以上は2割引になるという設定。

#include

int main(void)
{
int n,fee;

printf("リンゴの個数: ");
scanf("%d",&n);

fee = 50 * n;
fee = n<=3 ? fee:(4<=n && n<=6? fee*9/10 : fee*8/10); //1割引は(本来の料金×9/10)として計算。

printf("\n料金は%d円です。\n",fee);

return 0;
}

for文
繰り返し処理を行うための構文。
文法的には、for(初期化の式1; 繰り返すかどうかを判断する式2; 継続処理の式3) {繰り返したい処理;} という形になる。イメージとしては高校数学に出てくるシグマとかに似ている。

Hello World!を50回繰り返すコード
コピペを50回分繰り返すのも大変なのでfor文を用いる。
しかし、このHello World!ってなんなんだろうな。コンピュータの授業だと、いつも最初にやらさせられるけど、「キミもこのコンピュータの世界に生まれたんだね、おめでとう」、みたいななんかバカにされてる感じがして、別にほかの言葉でもいいと思うんだけどね。ハローワールドくらいわかるよバカやろうとか。

#include

int main(void)
{
int i = 1;
for(i = 1; i <=50; i++)
//初項は1で(i = 1)、そのあと1ずつ増やしていって(i++)、iが50まで行ったらおしまい(i <=50)という意味。

{printf("Hello World!\n");} //繰り返したい処理

return 0;
}

身長から適正体重を3回繰り返して調べるコード
課題の意味がよくわからなくて手こずったやつ。
適正体重(kg)は、身長(m)×身長(m)×22なので、式さえ定義すればいい。
ややこしいのは、結局ユーザーに3回身長を入力させるため、scanfの行もfor文の{}の中に組み込むというところ。

#include

int main(void)
{

double l,kg; //身長と適正体重の変数の宣言。
int i; //繰り返し回数の変数の宣言。

for(i=1; i<=3; i++)
{

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

printf("身長:%f\n",l);

kg=l*l*22;
printf("適正体重:%f\n",kg);

}

return 0;
}

1から入力された値までの奇数の和を求めて出力するコード
ただし、0やマイナスの数が入力された場合は合計値を0と表示すること。
いよいよ中かっこだらけで、どれがどの中かっことセットになっているか、わからなくなってきました。
かなり難しいが、テキストの155ページに答えが載っていた・・・

#include

int main(void)
{

int i,n,sum=0; //繰り返し回数iと、入力された値nと、奇数の和のsumを宣言

for(i=1; i<=n; i=i+2)
//初項は1で(i=1)、偶数は抜かすから一つ飛ばしで足していって(i=i+2)、nまで行ったらおしまい(i<=n)という意味。

{

printf("入力値:\n");
scanf("%d",&n);

if(n>0) //入力された数値がプラスの数ならば1~nまでの奇数を全て足す。
{

sum +=i ;
printf("1~%dまでの合計値は%dです。\n",sum);

}

else
{printf("合計値:0\n");} //0やマイナスの数が入力された場合は合計値を0と表示する。

}

return 0;
}

繰り返し回数を入力して決められるコード
繰り返す回数をnum回として、num回まで繰り返したら処理終了としている。

#include

int main(void)
{
int num,i;

printf("いくつ「Hello World!」を出力しますか?\n");
scanf("%d",&num);

for(i=1; i<=num; i++)
{printf("Hello World!\n");}

return 0;
}

4つの整数の最小値と最大値を求めるコード
テキストに載っていない恐るべき課題。
最小値は、それぞれの整数とminを比べて、minよりも小さければそれが最小値という決め方をさせている。

#include

int main(void)
{
int i,n,min,max;

n=0;
max=-10000;
min=10000;

for(i=1; i<=4; i++)
{
printf("整数:");
scanf("%d",&n);

if(min > n) //その数がminより小さいかどうかを調べている
min = n;

if(max < n) //その数がmaxより大きいかどうかを調べている
max = n;
}

printf("最小値は%dです。\n", min);
printf("最大値は%dです。\n", max);

return 0;
}

1から入力された値までの奇数の和を求めて出力するコード
ただし、0やマイナスの数が入力された場合は合計値を0と表示するということなので、この合計値が0になる場合(nが0以下)を先にif文ではけさせてしまう。
それ以外をelse文の{}に入れて、この中でfor文を作る。

#include

int main(void)
{
int i,n,sum;
sum=0;

scanf("%d",&n);
printf("入力値:%d\n",n);

if(n<=0)
{
printf("\n合計値:0\n");
}

else
{
for(i= 1; i<= n; i=i+2) //初項1、1つ飛ばしに増えて、nまで行ったらおしまい
{ sum=sum+i; } //※sum+=iでも多分大丈夫。
}

printf("合計値:%d\n",sum);

return 0;
}

プログラミング基礎覚え書き③(条件文ifとswitch)

 条件に応じてルートを変える二つの構文をまとめました。この二つの構文は、本当にキャラがかぶっていて憎らしいほどややこしい。個人的にはifの方がわかりやすいかなあ。

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

if文
もし○○だったら・・・という条件を与えて、その条件のもと真偽を判定する文。
今までのコードは、各行のおしりにセミコロン;を付けることが多かったが、なぜかif分のおしりにはセミコロン;をつけない。超トラップ。

60点以上なら合格、60点未満なら不合格と判定するコード
if文のところだけはセミコロンをつけないようにする。

#include

int main(void) {

int score;

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

if(score>=60)
printf("合格");

if(score<60)
printf("不合格");

return 0;
}

入力された整数が偶数か奇数かを判定するコード
2で割った余りが0か1かで判断する。パリティピーポー(※3度目)。

#include

int main(void)
{
int num;

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

if(num%2==1)
printf("%dは奇数です\n",num);

if(num%2==0)
printf("%dは偶数です\n",num);

return 0;
}

入れ子(ネスト)構造のif文
イメージとしては二次試験まである感じ。対象を絞り込む事が出来る。
授業の例だと、男性の大人だけ持ち物に髭剃りが追加されるようになっている。

#include

int main(void) {
int gender,age;

printf("性別を整数で入力(男:1,女:2): ");
scanf("%d",&gender);
printf("年齢を入力: ");
scanf("%d",&age);

printf("持ち物は着替えハブラシ");
if (gender==1) {
if (age>=20) {
printf("髭剃り");
}
}
printf("です.\n");

return 0;
}

入力された整数を分類するコード
「3の倍数」「3の倍数+1」「3の倍数+2」の3パターンに分類するためには、入力された整数を3で割って、その余り(懐かしのモジュラス)で判断するようにすればいい。
このコードも入れ子構造になっているのに注意。
まず、モジュラスを定義する大きな{}の中に、3つの{}(余り0の場合と、余り1の場合と、余り2の場合)が入っているようにしないとコンパイルできない(数学と違ってブロックの区切りがすべて中かっこなのでややこしい)。
そして、そもそも3で割れない場合(整数が3未満)はelse文ではじいている。

#include

int main(void) {

int n;
int mod;
scanf("%d", &n);

if (n > 2)
{
mod = n % 3;

if (mod == 0)
{ printf("%dは3の倍数\n", n); }

else if (mod == 1)
{ printf("%dは3の倍数+1\n", n); }

else if (mod == 2)
{ printf("%dは3の倍数+2\n", n); }

}

else
{
printf("%dは3未満\n",n);
}
return 0;
}

テストの点数によって成績をつけるコード
まず100点満点のテストなので点数がマイナスだったり100点を超える場合はエラーとする。
そのあと優>良>可>不可の順にelse if文でマトリョーシカ的に削ぎ落としていく。

#include

int main(void)
{

int n; //点数(数字)の変数を宣言
char *c; //成績(文字)の変数を宣言

scanf("%d", &n);

if(0>n || n>100) printf("\n入力エラー\n"); //ありえない点数

else{
if(n>=80)c="優"; //80点以上
else if(n>=65)c="良"; //65点以上80点未満
else if(n>=50)c="可"; //50点以上65点未満
else c="不可"; //50点未満

printf("\n成績:%s\n",c);
}

return 0;
}

善玉と悪玉のコレステロールの値を判定するコード
善玉コレステロールの正常値は 40以上、悪玉コレステロールの正常値は 70以上 140以下らしい。ちなみに私のコレステロール値はどちらも少ない。それはそれでどうなのだろうか。

#include

int main(void)
{
int zen,aku;

printf("善玉コレステロールの値を入力");
scanf("%d",&zen);

if(40<=zen)

{printf("善玉コレステロールは正常です。\n");}

else
{printf("善玉コレステロールは異常です。\n");}


printf("悪玉コレステロールの値を入力: ");
scanf("%d",&aku);

if(aku>=70 && aku<=140)
{printf("悪玉コレステロールは正常です。\n");}

else
{printf("悪玉コレステロールは異常です。\n");}

return 0;
}

switch文
if文と同じように、条件によって処理をコントロールできる文。
複数のケース(case)を任意に設定し、それ以外の入力があった場合はデフォルトということで、その他の処理としてまとめることができる。
注意点としては、case文ではセミコロン;ではなくコロン:をつけること、それぞれのケースのコードの最後にbreak;を入れないと、全ケースが表示されるバグが起きるということである。

年号をアルファベットから文字に変換するコード
M→明治、T→大正、S→昭和、H→平成に変換する設定。

#include

int main(void)
{

int res;
char ans;

printf("大文字のアルファベット一文字を入力\n");

scanf("%c", &res);

switch(res)
{

case 'M': //※セミコロンなのに注意!
printf("明治\n");
break; //※break文がないとバグるので注意!

case 'T':
printf("大正\n");
break;

case 'S':
printf("昭和\n");
break;

case 'H':
printf("平成\n");
break;

default: //どのケースにも当てはまらない場合
printf("エラー\n");
break;

}

return 0;
}

電卓のコード
数字1(num1)、演算子(op)、数字2(num2)の順に入力し、その計算結果(result)を返す。

#include

int main(void) {
int num1, num2, result;
char op;

printf("式:");
scanf ("%d %c %d", &num1, &op , &num2);

switch (op) {
case '+':
result = num1 + num2;
break;

case '-':
result = num1 - num2;
break;

case '*':
result = num1 * num2;
break;

case '/':
result = num1 / num2;
break;

case '%':
result = num1 % num2;
break;

default:
printf("エラー\n");
break;

}

printf("\n %d%c%dの結果:%d\n", num1,op,num2,result);

return 0;
}

入力された整数が偶数か奇数かを判定するコード(switch文バージョン)
2で割った余りが0か1かで判断する。パリティピーポー(※4度目)。

#include

int main(void)
{

int num,mod;

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

mod=num%2;

switch (mod)

{
case 1:
printf("%dは、奇数です\n");
break;

case 0:
printf("%dは、偶数です\n");
break;

default:
printf("エラー\n");
break;
}

return 0;
}

整数を入力し、その値に対応する季節を表示するコード(caseのまとめ方)
3か4か5が入力されたら全部春と表示するというように、複数のケースをまとめたい場合は、単純に並べて書いちゃって大丈夫らしい。


#include

int main(void)
{
int num;

printf("整数:\n");
scanf("%d", &num);

switch(num)
{

case 3:
case 4:
case 5: //並べちゃうだけでコンパイルできる。
printf("春\n");
break; //※break文がないとバグるので注意!

case 6:
case 7:
case 8:
printf("夏\n");
break;

case 9:
case 10:
case 11:
printf("秋\n");
break;

case 12:
case 1:
case 2:
printf("冬\n");
break;

default: //どのケースにも当てはまらない場合
printf("?\n");
break;

}
return 0;
}

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

 ゴールデンウィーク突入!この千載一遇のチャンスで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;
}

ペンタゴン・ペーパーズ/最高機密文書

 「面白い度☆☆☆☆☆ 好き度☆☆☆☆」

 新聞記事は歴史書の最初の草稿だ。いい表現よね。

 ナドレックさん激オシ映画。傑作・・・!これは今見るべき映画!
 とにかく、メリル・ストリープの社主が凄いカッコいい!政府(主にニクソン)の圧力と同時に、当時の重苦しい男性社会と戦う映画になってるんだな。パターナリズムの怖さというか。
 偉そうにする男どもにいじめられ続けてきた女性が最後にクリティカルアタックする爽快さ、というか。もちろん実話なんだけど、ちゃんとエンターテイメントになってるのが、毎度すごいよね。
 この映画ってすごい突貫工事で作ったらしいんだけど、日米問わず本当にタイムリーだし(多くは言うまい)、かといって一過性なものじゃなくて普遍的なメッセージだし。すごい。
 新聞の輪転機にも萌える映画!必見だ・・・!

 この映画見てつくづく思ったのは、ニクソン閣下に限らず自分個人に対する批判や疑問を、国家への侮辱だと卑劣にスライドさせるヤツは権力者に限らずわりといる(特に男にいる)ってことね。同一化というか。
 私の経験上でも、だいたいろくでもない奴って身の丈以上のでかいことをうそぶくんだよ。
①この町が世界を変えるとか言う町会議員(世界がその町を相手にするとは思えない)。
②生徒のためとか言う教師(そういう教師はだいたい生徒に嫌われている)。
③外来種を駆逐して生態系を保全しろとか言う生き物マニア(人間が嫌いなだけ)。
 だから、あれだ。こういうことは自分で自分に言い聞かせればいいわけで、相手に強いることじゃないじゃん。強いている時点で、だいたい胡散臭いね。

 この問題ってさ、アメリカ史だとけっこう有名な話でさ。英米文学の記事と、かぶるんだけど、東大の佐々木毅先生の『民主主義という不思議な仕組み』(132ページから)にすごいわかりやすくまとめてあったから、ちょっと長いけど引用したい。

 アメリカのマサチューセッツ州で、ヘンリー・デイヴィット・ソローというひとりの文筆家が、奴隷制反対などを楯にして、人頭税の納税拒否をいわば主義として宣言して投獄されました。(略)
 この市民の服従拒否(civil disobedience)という発想は、やがて政治と向かい合う一つの態度として注目を集めるようになります。(略)
 まず、彼は無政府主義者ではなく、政府は人間社会に必要な便宜を提供する機械、メカニズムであると考えています。そして、政府がこの便宜提供の役割に自分を限定し、個人を最高の価値のあるものとして、敬意をもって取り扱うようになることを自らの理想としています。問題は、政府の動向を支配する多数者が正、不正の判断にまで踏み込み、個人の良心に反することを法律という形にし、それに対する服従を市民の義務として求める場合です。(略)
 ここに、良心と政治の確執と緊張は避けられないことになります。(略)
 「自由の避難所」を謳い文句にした国家が、実際には国民の六分の一が奴隷であり、全土が軍隊の下に屈従させられている状況では、「誠実な人間が反逆し、革命を起こすべきとき」であると、ソローは断言します。一七七五年の独立の時には誰しもが革命のときであると語りましたが、ソローの時代にはほとんどの者が「今は、そういう事態ではない」と言っていました。しかし、ソローによれば今こそそういう事態、まさに緊急の事態なのです。


 つまり、これこそが、後にガンジーやキング牧師に影響を与えた思想なんだけど、この映画でも「報道の自由を守るには報道するしかない」ってスピ社会派映画の常連のトム・ハンクスが言ってて、これは、大統領や官僚は国民にとって油断ならない敵でしかない!!とか、そういうことを言いたいんじゃなくて、やっぱりシステムとして一線引かないとおっかないぞっていう話よ。
 多分さ、銭形のとっつぁんはルパンのこと好きだと思うんだよ。でも、泥棒となあなあになっちゃ公僕としてダメじゃん。

 だから、この映画を見て(・・・いるのだろうか?)、マスコミは国民のために頑張ってくれる安倍さんや政権の足を引っ張っているとか、ただのマスコミの自己満足なだけとか、そういう感想を持つ人もいるんだけどさ、それとこれとは話が違うんだよ。
 マスコミの書く事がくだらねえとか、低俗とか、ゴミとかそういう感想を持ったり、発信したりするのはいいんだよ(私もしばしば思うし)。しかし、私たちが意識的にならなければならないのは、だからといって報道の自由を権力者が一方的に制限しちゃうことが許されるならば、マスゴミ!とかSNSでツイートしている人たちの発言権すら奪われかねないという、もっとメタ的な問題がそこにはあるということなんだよ。

 つまり、ナショナリズムでも父権主義でも、逆に博愛主義とかグローバリズムとかでもいいけど、不特定多数が該当しうる大きな思想を論じるときは、そういった視点を持たないと、足をすくわれるというか。
 マスコミがダメだ!じゃなくて、実は○○新聞の何月何日のこの記者が書いた社説がムカついただけなんじゃないかっていう。
 よく、個別的なケースなのに、大人はみんな嘘つきだ!とか、言う人いるじゃん。でも本当は、その嫌な奴がたまたま大人だっただけで、一般化するんじゃねーよ小娘がって、私はソフトバンクのCMの女子高生に言いたい。
 ナイーブな奴が増えたのか、逆にナイーブな奴にも発言権が与えられたのかは、分からないけどね。

 ニクソンはクソだ。新聞社を潰したがってる。

つくばへの旅

DbSSBC2U0AAon7P.jpg
 人生初つくば!つーか、どことなく感じる海浜幕張感・・・!いいな~こういう都市だって知ってたら、筑波大学行ってたぜ~(´;ω;`)

DbSSSWMV4AAlacj.jpg
 てことで、こしさんに誘われて、つくばにある国立科学博物館の分館みたいなところに行ってきたんだけど、この分館の収蔵庫がすごくて、収蔵している標本の数が300万点くらいあって、まあ上野のかはく300軒分なんだけど、その関係者以外立ち入り禁止の収蔵庫に年に一日だけ入れるってことで参加してきました。燻蒸を控えたバックヤードツアーというか。
 哺乳動物、植物、人骨、鉱物、海洋生物などの標本がズラーっとあって、中でも3Dプリンタは驚いたな。あれを使って、芸人の馬鹿よ貴方はみたいな学者さんが、収蔵庫の動物の剥製を縮小してフュギュアにしてたんだけど、あんなんやられちゃったら海洋堂お手上げっていうか、これで作った模型をミュージアムショップで売れば、絶対ぼろ儲けだぜって思うよ。

 あとは、研究棟みたいなところで、虫媒花の研究者さんとかが講義やってて聴いたりした。特にビカリアの専門家の人の話が面白かったな。世の中にはビカリアに人生をかける人もいるのか、と(^_^;)
 で、あの貝って熱帯のマングローブとかにいる貝に似ていて、だから日本も新生代の中新世くらいは熱帯だったんじゃないかって仮説を提唱している人なんだけど、まあそれは可能性は低いというまさかのマッチポンプオチで、確かに緯度的に厳しいよな、とか。
 今は熱帯のみにいる貝が、あの時代にはもうちょっと北進して、ニホンザルみたいに、ある程度寒い環境にも適応できたやつがいたんじゃないかな、とか。
 で、ビカリアは、なんか大きく分けると、日本と韓国のやつら(ヨコヤマビカリア)と、東南アジアのやつ(ベルヌーイビカリア)の二大派閥に分かれるっぽくて、いくつかグループがあったんだったら、そういうのもいたんじゃないかとかね。

 それと熱帯の昆虫の専門家の人がいて、いろいろ質問したんだけど、というか、基本的にここの施設の人は会話が好きというか、すごい素人にも親切に教えてくれて、メチャ勉強になるんだけど、それで、保全生態学とかでモヤモヤしているところ、もう全部聞いちゃえって聞いて、で、やっぱり自分の感覚でいいのかって、すっきりした。
 よくある絶滅速度の計算なんかはやっぱり既成事実のように書いてあるけど、やっぱり勇み足で、あれって緑地面積の減少率から出しているらしいんだ。だから仮に、完全に一様に生物種が分布してたら個体数減るだけだろっていう。恐竜時代の絶滅速度の信ぴょう性に関しては言わずもがな、と。
 ただし、私って昆虫ってなんか寿命も短いし、子どももたくさん生むから、種分化の速度って早いと思ってたんだけど、一般的に昆虫の種が増えるのにかかる時間は数千年とか数万年で、まあ、ショウジョウバエみたいな例外(数十年で2~3種に増える)はいるらしいんだけど、それでも人間が環境破壊で滅ぼしてしまうと、とてもそれをカバーするほどの速さで種を増やすことは難しいっていう。つまり、生物多様性はやっぱり人間の干渉でかなりドラスティックに減らせるっていうのは、事実としてあるんだと。

 あと、外来種のコーナーで、サソリとかクモとかの専門の人がいて、結局マスコミが大騒ぎしたセアカゴケグモは、もう西日本では完全に打ち解けた、とw確かに危ない毒グモだけど、日本にもスズメバチとかいるし、市民権得たみたいに言ってて、これも面白かった。
 それと海洋生物のフロアで貝の先生がいたんだけど、貝の世界は本当に全貌が全然分かってなくて、年間200種類も新種が見つかるらしい。だとしたら、新種を発見したい若手の人にとっちゃ、本当に宝の山っていうか。
 まあ、貝に限らず、この手の陽の目の見ない、研究者が全然いない生物は山ほどあるんだよっておっしゃってました。
 だから、結局のところ地球上に生物が何種類いるかは全く見当もつかないと。線虫なんかはいろんな昆虫の中にいて、それを引っ張り出して同定するとしたら、すごいことになるぞ、と。

 最後に、このクソ暑い中、野外でイルカの解体ショー(病理解剖)とかもすしざんまい的にやってたんだけど、こしさんは興味津々でずっと見てたけど、もうね、すごいくさいのよ。
 ビーフジャーキーが濃縮して腐ったような匂いで、オレ、ここ数週間あのおつまみは食えないわ(^_^;)

DbTmce9UwAAc0BK.jpg
オーシャンハンター。

DbTmeg8VwAA7-rS.jpg
ダライアスバーストアナザークロニクル。
Calendar
<< April 2020 >>
SunMonTueWedThuFriSat
   1234
567891011
12131415161718
19202122232425
2627282930
search this site.
tags
archives
recent comment
recent trackback
others
にほんブログ村 科学ブログへ にほんブログ村 科学ブログ 恐竜へ カウンター
admin
  • 管理者ページ
  • 記事を書く
  • ログアウト

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270