分12論理の数学にはいくつかの演算公式があります。むやみに暗記するのではなく,公式集を片手にいくつかの練習問題を解けば自然と覚えてしまうことでしょう。技術には頭で理解し覚える性質のものもあれば,体を動かしてみなければわからないものもあります。この挽き方,釘の打ち方,かんなの使い方をいくら口で教わっても,自分で出来るようにはなりません。方法を理解したら,あとは繰り返しやってみるしかありません。計算力をつける方法は,理屈を理解したら,あとはひたすら手を動かしてみることです。一通り今回の記事を読まれたら,出来るだけ数多くの問題で練習して下さい。論理の数式計算のことを論理代数といいます。論理代数には,論理を計算に見立てて式を変換・変形するための定理や公式があります。数式といっても,取り扱うのは整数や実数ではなく論理値です。取り扱う値が違いますから,おのずと定理・公式も数値を取り扱うときとはずいぶん異なります。慣れるしかありません。長い論理式をシンプルな形に変換できるということは,複雑だったプログラムをシンプルに書き換えることが出来ることを意味しています。とも身につけましょう。全てを一度に覚える必要はありませんから,先ずは一通り眺めてみてください。式19.1,19.2はそれぞれ真の反対は偽,偽の反対は真だ,という論理代数の前提・原則です。論理値は真か偽の2つしかなく,お互いに反対の関係にあるということを宣言しています。論理値は何かの条件式,命題を評価した結果です。真か偽,どちらかの値を取り,一方の反対,すなわち否定がもう一方の値なのです。この公理を活かすシーンを紹介しましょう。整数変数iの値が0より大きい場合に何かの処理をしているとしましょう。その時の条件式はi>0です。この式の評価の結果が真ならばある処理を行っていたとします。この逆の場合の処理を加えたい場合は次のように書くことが考えられます。System.out.println("処理B");}さて,条件が真の場合の処理が必要なくなり,その逆の場合の処理Bのみが必要になったらどうしましょう。処理Aの行をコメントアウトする方法もありますが,最終的なコードをよりシンプルにしたいとします。ひとつの方法は条件式を書き換えることです。そこで,次のように書きました。System.out.println("処理B");}コードがシンプルになり,一件落着,と思いたいところですが,落とし穴が潜んでいます。どこだかわかりますか?条件式i>0でない場合とは,i<=0ですね。簡単なようで,実はよくやってしまいがちなケアレスミスです。こんなミスを防ぐために,論理の数学が役に立ちます。条件式の評価結果は論理値です。「⁠ある場合」ではない場合とは,ある条件式の評価結果が偽のときに真ととらえること,すなわち否定の演算をするのです。シンプルに,!(i>0)と書けば完成です。これならソースコードの修正がずいぶん簡単で,ミスの入り込む余地もありません。System.out.println("処理B");}論理演算子をつかうメリットは,Java言語の制御構文(else)を使うよりも短くシンプルに論理的に否定の場合を記述できることです。積極的に使いましょう。式19.3は論理演算の原則を表しています。偽であることと論理積を取ったら必ずその結果は偽であると宣言しています。具体的な例にあてはめてみましょう。論理値Aは「ある人が橋を渡ること」を示すとします。論理値Bは「そこに橋があること」を表すとします。ある人が橋を渡るためには,これら両方が成立しなければなりません(真でなければならない)から,AとBの間の演算子は「~かつ~」を表す論理積です。式はA・Bとなります。今ここに橋がないとします。すると,論理値Bは常に偽です。常に値が変化しませんからBは定数0で置き換えましょう。式はA・0となります。橋を渡りたくても,渡りたくないとしても,橋がないのですから,常に橋を渡ることは起こりません。この場合「ある人が橋を渡る」という事柄は常に偽となります。よって,A・0=0です。プログラミングと日本の端っこ踏破旅行。2010年のLotYはRuby。結城浩氏のような仕事をしたいと妄想する30代後半♂。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。