ようこそテクノおじさんホームページへ!(2022年5月1日号)

旧アイテム(1月)は過去ログ倉庫を参照ください。202201_1
旧アイテム(2月)は過去ログ倉庫を参照ください。202201_2
旧アイテム(3月)は過去ログ倉庫を参照ください。202202_1
旧アイテム(4月)は過去ログ倉庫を参照ください。202204_1
5月です。花の季節も終わり梅雨が近くまで来ている時期になってきました。地球温暖化のためか今年は雨の日が多いようです。雨の災害が起こらないことを願います。
トヨタ自動車の本社近くに水源町という町があります。ここには矢作川から明治用水に水を取り入れるダムがあります。いつも満々と水を蓄えていました。ところがダムの底に
穴があきダムの水が抜けてしまいました。豊田市、岡崎市、安城市などの水田には欠かせない水源がかれてしまいました。田植え最中の農家は大変困っています。
ここでいつも頭に浮かぶのは事故回避、不具合発生回避のことです。北海道での観光船の台船からの落下など今一度災害防止、危険予知、不具合発生予知などのトレーニングを
見直す時期に来ていますね。
毎日ウクライナ情勢が伝えられていますがロシアの戦車が空から撃たれて破壊される映像が目立ちます。もう戦車での戦いの時代ではないことを意味しますね。
トルコ製のドローン爆撃機は搭載されたカメラで敵を感知しこの映像を自軍の基地まで送りオペレータは狙いを定めてミサイルを撃つことができるようです。
もはやゲーム感覚での戦争ですね。恐ろしい世の中です。おそらくカメラ技術には日本の製品が使われているのではないかと思います。一方中国はウクライナに
ドローン(DJI製で爆撃機ではない)を提供しましたが密かにドローン位置情報をロシアに提供していたようです。DJIは米国から締め出しをされた
企業ですが危ないですね。DJIのOSMO poketはGoProと並ぶ小さくて優秀なカメラですがデータは中国に吸い上げられているかもしれません。
さて今月度は先月に続き「C言語の基礎講座第二回目」と技術Tips色々を掲載します。
お暇なときにお読みください。

C言語の基礎講座第二回目 ヘッダーファイル、構造体、演算子です
    (1)C言語の学び方 ヘッダーファイル
    ソースファイルとヘッダーファイル
    cには、".h"(ヘッダファイル)と、".c"ファイル(ソースファイル)があります。
    通常、大きなプログラムは、多数の関数から成っています。そのため、それらのファイルは、
    規模に応じて複数に分割されることになりますが、通常、ファイルが分割されれば、
    他のファイルにある関数を呼び出すことが出来なくなります。
    そこで、ヘッダファイルに、.cファイルに記述されているファイルの内容を記述しておき、
    それを読み込むことにより、.cファイルに記述されている関数を利用することが出来るようになります。
    このヘッダファイル、プロトタイプ宣言が記述されているファイルなのです。


    例として引数の加算値を計算する関数をヘッダーファイルに持つプログラム紹介します
    例 main.cの記述

    main.c

       #include <stdio.h>
       #include "calc.h"

      void main(){
      double d1,d2,d3;
      double a = 2.0,b = 5.2,c = 6.6;
      // 同じ計算が3回(関数を呼び出して計算)
       d1 = kasan(a,b);
       d2 = kasan(4.1,5.7);
       d3 = kasan(c,2.8);
      printf("d1 = %f,d2 = %f,d3 = %f¥n",d1,d2,d3);
    }

    関数計算
      calc.c

      #include "calc.h"

    // 加算値を求める関数
     double kasan(double l,double m){
       // 引数l,mの加算値を求め、rに代入する。
       double r = l+m;
       return r;
    }


    ヘッダーファイルの記述
     calc.h

     #ifndef _CALC_H_
     #define _CALC_H_

    // 関数kasanのプロトタイプ宣言
     double kasan(double,double);
     #endif


    (2)C言語の学び方 構造体
    C言語の構造体について説明します。C言語では構造体を使って、ある対象に関連する項目をひとまとまりに扱うことができます。
    構造体はint型や文字列など型の違う変数でも1つのかたまりにできます。メモリー上では一塊の連続エリアが割り当てられるようになります。
    構造体の宣言の方法について説明します。構造体は下記のように宣言します。
    構造体名の前に「struct」句を記述し、「;」で区切られたメンバを「{};」ブロックで囲みます。
    これはPersonという構造体の例です。メンバはname、age、genderです。


    struct Person
    {
    char name[50];
    int age;
    char gender;
    };


    構造体の使い方。ここでは構造体の変数に値を格納して出力します。


    #include <stdio.h>
    #include <string.h>

    struct Person
    {
    char name[50];
    int age;
    char gender;
    };

    int main()
    {
       struct Person person;
       strcpy_s(
         person.name,
         sizeof(person.name) - 1,
         "Michel Jackson");
       person.age = 20;
       person.gender = "M";

       printf(
       "name: %s\n"
       "age: %d\n"
       "gender: %d\n",
       person.name, person.age, person.gender);
       getchar();
    }


    (3)C言語の学び方 演算子
    演算子にはいくつもの種類があります

    インクリメント・デクリメント演算子
    ++

      ++x xに+1してxを評価します。(前置演算)
      x++ xを評価したあとxに+1します。(後置演算)
    --

      --x xに-1してxを評価します。(前置演算)
      x-- xを評価したあとxに-1します。(後置演算)

       ビット演算子

      & x & y 論理積(AND)を行います。
      | x | y 論理和(OR)を行います。
      ^ x ^ y 排他的論理和(XOR)を行います
      ~ ~x 否定(NOT)を行います。

    シフト演算子

      左シフト x << n 数値xに対して左にnビットシフトさせる場合
      右シフト x >> n 数値xに対して右にnビットシフトさせる場合
      なお符号付の数値の場合は符号ビット(MSB)はビットシフトで変化しない

    論理演算子

      && 論理積 AND  a && b  aとbが共に真の場合に真
      || 論理和 OR  a || b  aかbの少なくとも1つが真の場合に真
      !  否定 NOT  !a  aが真の時に偽、偽の時に真

         例1

      int x = 10;
        if (x > 3 && x < 20){
       printf("x は3より大きく20より小さい¥n");
      }
         例2

      int x = 20;
      int y = 30;

      if (x > 10 || y < 20){
       printf("x が10より大いか、y が30よりも小さい¥n");
      }

        例3

      int x = 20;

      if (!(x == 10)){
       /* ... */
      }

    比較演算子

      >, >=, <, <=, ==, !=
        >   大なり   a > b aはbより大きい
       >=   大なりイコール  a >= b  aはb以上
       <  小なり  a < b  aはbよりも小さい
       <=  小なりイコール  a <= b  aはb以下
       ==  イコール  a == b  aとbは同じ
       !=  ノットイコール  a != b  aとbは同じでない


    今月の技術Tips

    <最近気になるYouTube動画>

    YouTubeは最近の情報を手軽に教えてくれる有益な手段になっています。しかし次のようなことにに気をつけなけれないけないことに気づきました
    まず偽情報に踊らされないことです。投稿者は視聴回数に応じてグーグルから金が振り込まれるため興味を引くように不正確な情報を提供することがあります。
    タイトルを見るとあたかも真実らしい視聴者が好みそうなタイトルで気を引きます。しかし実際に内容を見ると事実と違うことに気づきます。
    こういったYouTubeチャンネルは早めに「チャンネルをお勧めに表示しない」ようにしましょう。

    次は「最新情報」とタイトルに表示しているのですがすでに半年から一年前の情報を流すユーチューバーです。これらの投稿内容は他人の投稿の
    パクリが多い気がします。わかっている人はコメントに「いつの情報を流しているのだ」とあります。

    次の例はテレビ番組を録画した投稿です。明らかにこれは放送法違反、著作権法違反です。テレビ局がyoutube配信する場合もありますが個人では絶対やってはいけません。
    日本でもモラルのない人がいかに多いかがわかります。

    次は個人的意見ですがお笑い芸人などがYouTube配信していることに違和感があります。とくに売れなくなったタレント、不祥事を起こした芸人などです。
    哀れで見るに堪えません。

    また次のようなアイテムにはついていけません。タイトルの日本語の乱れ。タイトルと内容が全く合ってないもの。タイトルの日本語が理解不能なもの。
    「やばい」という言葉が入るタイトルが多くみられますが本来「よろしくない」という意味ですがそうでないようです....などです。

    他人に不愉快な思いをさせる内容動画。たとえば「Windows10ならセキュリティソフトは不要」。高い金を払ってセキュリティ対策をしている人に失礼です。
    またセキュリティソフトを開発販売している会社にも失礼。

    <新聞等マスコミの衰退>

    毎日新聞を購買していますが最近記事が全く面白くなくやめようかと思っています。しかし娘がテレビの番組欄がほしいからと言うのでいまだに購買しています。
    何故面白くないかというとまず広告があまりにも多いこと、健康食品や通販の宣伝御用達新聞です。また記事内容に偏りがあること。都合の悪いことは報道しない姿勢です。
    ネットやユーチューブで見られることが新聞は報道しない。記事に対する金の流れに不信感があります。
    新聞に限らずテレビもよく似たものです。マスコミ関係者の不祥事が多々聞こえてきますが一切責任者が会見することは見たことがありません。

    <知床観光船の沈没>

    知床観光船の沈没は実に痛々しい限りです。自動車や航空機の世界に比べ観光船の安全対策が如何に杜撰かということを教えられました。
    数百馬力のエンジンを搭載しながら何一つ安全のためのセンサーが搭載されていないようです。船舶の場合浸水は致命的ですが海水侵入のセンサーはないのでしょうか。
    おそらくレーダーもソナーを未搭載でしょう。陸上交通よりも危険な座礁、強風、波浪に対する備えが見られないことに驚きです。