<?xml version="1.0" encoding="UTF-8" ?>
<rss version="0.91">
  <channel>
    <title>超プログラミング</title>
    <description>数多のプログラミングを極めようとせんとする漢のブログ</description>
    <link>https://chouprogramming.blog-sim.com/</link>
    <language>ja</language>
    <copyright>Copyright (C) NINJATOOLS ALL RIGHTS RESERVED.</copyright>

    <item>
      <title>2015/01/17/「グーグルグラス」個人向け販売中止</title>
      <description>「グーグルグラス」個人向け販売中止&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.nikkei.com/article/DGXLASGM16H1J_W5A110C1EAF000/&quot; title=&quot;&quot;&gt;http://www.nikkei.com/article/DGXLASGM16H1J_W5A110C1EAF000/&lt;br /&gt;
&lt;/a&gt; (リンク先：日経新聞)&lt;br /&gt;
&lt;br /&gt;
　米国や英国で販売されていたグーグルグラスが個人向け販売を中止して法人向け販売に展開した。その外見は普通の眼鏡に小型のスコープのような機器が取り付けられていてそれが周囲から盗撮の心配が上がったのだ。&lt;br /&gt;
&lt;br /&gt;
　すでに法人向けには作業を効率的に行うものとして在庫確認などが素早くできる開発をしている。またヘッドマウントディスプレイのような装着感も少なく拡張現実(AR)がより現実さを帯びてくるだろう。&lt;br /&gt;
&lt;br /&gt;
　外に目を向けてみれば新聞配達や郵便配達、宅配便などはまだ人間が行っている。全てを自動化するのはまだまだ先のようだがグーグルグラスを活用することで次の目的地の経路を最短で表示し作業を効率化するのは比較的容易ではないだろうか。可能性は無限にある。</description> 
      <link>https://chouprogramming.blog-sim.com/daily/2015-01-17-%E3%80%8C%E3%82%B0%E3%83%BC%E3%82%B0%E3%83%AB%E3%82%B0%E3%83%A9%E3%82%B9%E3%80%8D%E5%80%8B%E4%BA%BA%E5%90%91%E3%81%91%E8%B2%A9%E5%A3%B2%E4%B8%AD%E6%AD%A2</link> 
    </item>
    <item>
      <title>2015/01/12/寄生獣</title>
      <description>&lt;strong&gt;&lt;a href=&quot;http://www.amazon.co.jp/%E5%AF%84%E7%94%9F%E7%8D%A3-%E5%AE%8C%E5%85%A8%E7%89%88-1-KC%E3%83%87%E3%83%A9%E3%83%83%E3%82%AF%E3%82%B9-%E3%82%A2%E3%83%95%E3%82%BF%E3%83%8C%E3%83%BC%E3%83%B3/dp/4063346641&quot; title=&quot;&quot;&gt;寄生獣&lt;/a&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;span style=&quot;color: #414244; font-family: メイリオ, Meiryo, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'ＭＳ Ｐゴシック', sans-serif; font-size: 13px; line-height: 22.1000003814697px; background-color: #fafafa;&quot;&gt;(リンク先：amazon)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
　岩明均氏による漫画作品。漫画を読んでいると中だるみのようなものを感じてしまう作品がいくつもあるがこの作品ではそういうものは一切ない。無駄が全くないのだ。漫画家のなかでこれほど話を作るのがうまい人はそうはいないだろう。&lt;br /&gt;
&lt;br /&gt;
　去年映画の実写版が公開されたが限られた時間内でこの作品の素晴らしさを表現できたのだろうか。最近オリジナルより原作があらかじめあるものが多く見受けられる。それは映画に限らずの話だが脚本家は己の才能だけで勝負をしてほしい。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #414244; font-family: メイリオ, Meiryo, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'ＭＳ Ｐゴシック', sans-serif; font-size: 13px; line-height: 22.1000003814697px; background-color: #fafafa;&quot;&gt;オススメ度&lt;/span&gt;&lt;br style=&quot;line-height: 22.1000003814697px; color: #414244; font-family: メイリオ, Meiryo, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'ＭＳ Ｐゴシック', sans-serif; font-size: 13px; background-color: #fafafa;&quot; /&gt;&lt;span style=&quot;color: #414244; font-family: メイリオ, Meiryo, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'ＭＳ Ｐゴシック', sans-serif; font-size: 13px; line-height: 22.1000003814697px; background-color: #fafafa;&quot;&gt;★★★★★(5/5)&lt;/span&gt;&lt;br style=&quot;line-height: 22.1000003814697px; color: #414244; font-family: メイリオ, Meiryo, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'ＭＳ Ｐゴシック', sans-serif; font-size: 13px; background-color: #fafafa;&quot; /&gt;&lt;span style=&quot;color: #414244; font-family: メイリオ, Meiryo, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'ＭＳ Ｐゴシック', sans-serif; font-size: 13px; line-height: 22.1000003814697px; background-color: #fafafa;&quot;&gt;(完結：全8巻)&lt;/span&gt;</description> 
      <link>https://chouprogramming.blog-sim.com/manga/2015-01-12-%E5%AF%84%E7%94%9F%E7%8D%A3</link> 
    </item>
    <item>
      <title>2015/01/12/ピンポン</title>
      <description>&lt;strong&gt;&lt;a href=&quot;http://www.amazon.co.jp/%E3%83%94%E3%83%B3%E3%83%9D%E3%83%B3-Big-spirits-comics-special/dp/4091847366&quot; title=&quot;&quot;&gt;ピンポン&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
(リンク先：amazon)&lt;strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;　松本大洋氏による漫画作品。この作品を好きな理由のひとつとして長すぎないことが大きいかもしれない。全5巻、数時間で読むことができ読了後は後味が良くてストーリーも面白い。&lt;br /&gt;
&lt;br /&gt;
　主人公を含め登場人物はそれぞれ嫉妬や重圧や挫折などに苦しんでいて人間味が溢れている。そこが読者の共感を誘い引き込むのだ。&lt;br /&gt;
&lt;br /&gt;
オススメ度&lt;br /&gt;
★★★★★(5/5)&lt;br /&gt;
(完結：全5巻)</description> 
      <link>https://chouprogramming.blog-sim.com/manga/2015-01-12-%E3%83%94%E3%83%B3%E3%83%9D%E3%83%B3</link> 
    </item>
    <item>
      <title>2015/01/11/ミドリムシで、空を飛ぶ。</title>
      <description>&lt;strong&gt;ミドリムシで、空を飛ぶ。&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;&lt;a href=&quot;http://www.nikkei.com/article/DGXMZO81333380V21C14A2000000/&quot; title=&quot;&quot;&gt;http://www.nikkei.com/article/DGXMZO81333380V21C14A2000000/&lt;/a&gt;&lt;br /&gt;
(リンク先：日経新聞)&lt;strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;　中学生のころミドリムシの勉強をして以来その名を聞かなかったが、現在かなりの注目を集めている。栄養が豊富で食事やサプリメントとして注目されているだけでなく、飛行機の燃料として使う動きが見られているのだ。&lt;br /&gt;
&lt;br /&gt;
　この記事を見て私が最初に思ったことは「よくミドリムシを燃料にしようとしたな」だ。課題も多いらしく燃料にするためには莫大な量のミドリムシが必要で、それらは光合成なしでは増殖しない。横が透明なプールで満遍なく人口太陽を照らし続け、一定の量を安定して生み出すことができれば新たな燃料革命が起こるだろう。&lt;br /&gt;
&lt;br /&gt;
　夜になる時間が短い北欧やカナダなどでこれらの事業を行えば開発コストも抑えられ日本の経済も明るくなるのではないだろうか。</description> 
      <link>https://chouprogramming.blog-sim.com/daily/2015-01-11</link> 
    </item>
    <item>
      <title>Lispの再帰関数</title>
      <description>&lt;strong&gt;指数関数&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;xを任意の非負実数、mを任意の非負整数とするとき、xのm乗の再帰関数mypwrを定義します。&lt;br /&gt;
&lt;br /&gt;
if関数&lt;br /&gt;
****&lt;br /&gt;
(defun mypwr (x m)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(if (= m 0)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.0&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(* x (mypwr x (- m 1)))))&lt;br /&gt;

&lt;div&gt;; [1]&amp;gt; (mypwr 2 3)&lt;/div&gt;
&lt;div&gt;; 8.0&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (mypwr 0.5 3)&lt;/div&gt;
&lt;div&gt;; 0.125&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
cond関数&lt;br /&gt;
****&lt;br /&gt;
(defun mypwr (x m)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(cond ((= m 0)&amp;nbsp;1.0)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(T (* x (mypwr x (- m 1))))))&lt;br /&gt;

&lt;div&gt;; [1]&amp;gt; (mypwr 2 3)&lt;/div&gt;
&lt;div&gt;; 8.0&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (mypwr 0.5 3)&lt;/div&gt;
&lt;div&gt;; 0.125&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
xが2、mが3の場合について考えてみましょう。if文で&quot;(= m 0)&quot;と記述されているので、条件に当てはまらないときの手続きである&quot;(* x (mypwr x (- m 1)))))&quot;を行います。&quot;(* 2 (mypwr 2 2))))&quot;と解釈ができるので&quot;(mypwr 2 2)&quot;について考えます。同様にmは0ではないので&quot;(* 2 (mypwr 2 1))))&quot;となり、&quot;(mypwr 2 1)&quot;でもmは0ではないので&quot;(* 2 (mypwr 2 0))))&quot;となります。&quot;(mypwr 2 0)&quot;ではmの値が0なので1.0を返し、&quot;(mypwr 2 1)&quot;は1.0なので置き換えると&quot;(* 2 1.0)&quot;となります。また同様に繰り返していくと&quot;(mypwr 2 2.0)&quot;、&quot;(mypwr 2 4.0)&quot;となり最終的な答えは8.0になります。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;平方根&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
任意の正実数cの平方根c^(1/2)を求める関数mysqrtを定義してみましょう。実数xを引数とする実関数をF(x)=x^(2)-cとするとき、F(x)が0ならば等式の関係が成り立ちます。xとcをそれぞれ2乗している理由は最終的な答えをxでだすためです。x^(2)=cならばxを返せばその値はc^(1/2)になります。さて、この方程式を求めるにはニュートン法と呼ばれる再帰的な計算方法でその近似値解を求めます。初期値を正の実数x(0)にしたときの近似値解x(n)は&lt;br /&gt;
&lt;br /&gt;
x(n)=x(n-1)-F(x(n-1))/f(x(n-1))&lt;br /&gt;
&lt;br /&gt;
になります。x(0)はxの最初の解、x(n)は上の式を再帰的にn回繰り返したときに求められる解のことです。その2つの解の間にはx(1),x(2),...,x(n-2),x(n-1)とあります。さらに、この式でのf(x(n-1))はF(x(n-1))の導関数を表します。つまり、f(x(n-1))はF(x(n-1))を微分したものになります。これらのことをF(x)=x^(2)-cに置き換えてみると&lt;br /&gt;
&lt;br /&gt;
x(n)=x(n-1)-(x(n-1)^(2)-c)/(2x(n-1))&lt;br /&gt;
&lt;br /&gt;
になり、分数部分を分解して再度整理すると&lt;br /&gt;
&lt;br /&gt;
x(n)=x(n-1)/2+c/(2x(n-1))&lt;br /&gt;
&lt;br /&gt;
Lispで記述すると&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;
(defun better (x c)&lt;br /&gt;

&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(+ (/ x 2.0)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(/ c (* 2.0 x))))&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
になりました。さて、ニュートン法とはnの値が大きくなればなるほど解に収束していきますが計算を永遠に続けていくわけにはいきません。どこかで誤差(妥協)を決めなければならないのです。それは人それぞれですが、今回は誤差0.001で考えてみましょう。&lt;br /&gt;
&lt;br /&gt;
実際の解F(x)と再帰的に求めた解F(x(n))の誤差を求めるにはその２つの解の絶対値を求めて、それが誤差未満かどうかを判断します。絶対値を求める関数は前回の真偽の判定で定義した関数absoluteを使用します。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;(defun absolute (x)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(cond ((&amp;lt; x 0) (- 0 x))&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(T x)))&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
関数absoluteで求めた値が誤差より小さければ計算を止めるように命令をすればよいので、ここでは&quot;T&quot;を返すようにします。誤差を変数errと置くと&lt;br /&gt;
&lt;br /&gt;
|F(x)-F(x(n))|&amp;lt;err&lt;br /&gt;
&lt;br /&gt;
F(x)を変数a、F(x(n))を変数bと置いてLispで記述したときの関数nearは&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;(defun near (a b err)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(&amp;lt; (absolute (- a b)) err))&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
になります。最後に関数nearで&quot;T&quot;が帰ってきた場合はxを返し、&quot;NIL&quot;が帰ってきた場合はxを再度計算します。つまり、xの値を関数betterでさらに計算した値に置き換える処理をします。上記の処理をする関数の名前をmysqrt-coreとすると&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;(defun mysqrt-core (c x err)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(if (near c (* x x) err)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;x&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(mysqrt-core c (better x c) err)))&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
になり、関数mysqrtは&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;(defun mysqrt (c)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(mysqrt-core c 1.0 0.001))&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
と記述ができます。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;
(defun better (x c)&lt;br /&gt;

&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(+ (/ x 2.0)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(/ c (* 2.0 x))))&lt;br /&gt;

&lt;div&gt;(defun absolute (x)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(cond ((&amp;lt; x 0) (- 0 x))&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(T x)))&lt;br /&gt;
(defun near (a b err)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(&amp;lt; (absolute (- a b)) err))&lt;br /&gt;

&lt;div&gt;(defun mysqrt-core (c x err)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(if (near c (* x x) err)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;x&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(mysqrt-core c (better x c) err)))&lt;br /&gt;

&lt;div&gt;(defun mysqrt (c)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(mysqrt-core c 1.0 0.001))&lt;br /&gt;

&lt;div&gt;; [1]&amp;gt; (mysqrt 2)&lt;/div&gt;
&lt;div&gt;; 1.4142157&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (mysqrt 5)&lt;/div&gt;
&lt;div&gt;; 2.2360687&lt;br /&gt;

&lt;div&gt;; [3]&amp;gt; (mysqrt 4)&lt;/div&gt;
&lt;div&gt;; 2.0&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;演習&lt;/strong&gt;&lt;br /&gt;
任意の正実数cと2以上の任意の整数mが仮引数として与えられたときのcのm乗根(&amp;gt;0)を計算する関数rootを定義し適当な値で評価せよ。なお、初期値xは1.0、誤差errは0.001とし、必要な関数は自分で定義をすること。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;演習回答&lt;br /&gt;
&lt;/strong&gt;****&lt;br /&gt;

&lt;div&gt;(defun better (x c m)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(+ (* (- 1 (/ 1 m)) x)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(/ c (* m (mypwr x (- m 1))))))&lt;br /&gt;

&lt;div&gt;(defun absolute (x)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(cond ((&amp;lt; x 0) (- 0 x))&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(T x)))&lt;br /&gt;
(defun near (a b err)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(&amp;lt; (absolute (- a b)) err))&lt;br /&gt;
(defun mypwr (x m)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(if (= m 0)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.0&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(* x (mypwr x (- m 1)))))&lt;br /&gt;

&lt;div&gt;(defun root-core (c m x err)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(if (near c (mypwr x m) err)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;x&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(root-core c m (better x c m) err)))&lt;br /&gt;
(defun root (c m)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(root-core c m 1.0 0.001))&lt;br /&gt;

&lt;div&gt;; [1]&amp;gt; (root 3 8)&lt;/div&gt;
&lt;div&gt;; 1.1472127&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (root 4 2)&lt;/div&gt;
&lt;div&gt;; 2.0&lt;br /&gt;

&lt;div&gt;; [3]&amp;gt; (root 15 4)&lt;/div&gt;
&lt;div&gt;; 1.9679902&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;演習解説&lt;/strong&gt;&lt;br /&gt;
この問題でポイントになるのはF(x)からx(n)が求められるか、x(n)をLispで記述できるかの2点です。それさえできれば2乗根と同じ要領でできます。&lt;br /&gt;
&lt;br /&gt;
まず、cのm乗根をF(x)=x^(m)-cとするときf(x)はm*x^(m-1)となります。そしてx(n)はニュートン法の式に代入していきx(n)=x(n-1)-(x(n-1)^(m)-c)/(m*x(n-1)^(m-1))を得ます。式を整理してみるとx(n)=(1-(1/m))*x(n-1)+c/(m*x(n-1)^(m-1))となりx(n)を求めることができました。&lt;br /&gt;
&lt;br /&gt;
次にx(n)をLispで記述するには、xのm乗を計算しなくてはなりません。指数の計算に少し戸惑った人がいると思いますがこのページの最初の定義式に指数を計算する関数mypwrがあるのでそれを利用します。</description> 
      <link>https://chouprogramming.blog-sim.com/lisp/%E5%86%8D%E5%B8%B0%E9%96%A2%E6%95%B0</link> 
    </item>
    <item>
      <title>Lispの真偽判定</title>
      <description>&lt;strong&gt;比較演算子を使ってみよう&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;比較演算子とは2つの対象の関係性を調べるものです。具体的には&quot;&amp;lt;&quot;,&quot;=&quot;,&quot;&amp;gt;&quot;などです。使い方は関数と一緒で&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;strong&gt;(&amp;lt; 引数1 引数2)&lt;/strong&gt;&quot;&lt;br /&gt;
&quot;&lt;strong&gt;(= 引数1 引数2)&lt;/strong&gt;&quot;&lt;br /&gt;
&quot;&lt;strong&gt;(&amp;gt; 引数1 引数2)&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
などと記述します。また、これらは真の場合&quot;&lt;strong&gt;T&lt;/strong&gt;&quot;、偽の場合&quot;&lt;strong&gt;NIL&lt;/strong&gt;&quot;を返します。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;
; [1]&amp;gt; (&amp;lt; 1 2)&lt;br /&gt;
; T&lt;br /&gt;
; [2]&amp;gt; (&amp;lt; 2 1)&lt;br /&gt;
; NIL&lt;br /&gt;
; [3]&amp;gt; (&amp;lt; 1 1)&lt;br /&gt;
; NIL&lt;br /&gt;
; [4]&amp;gt; (&amp;gt; 2 1)&lt;br /&gt;
; T&lt;br /&gt;
; [5]&amp;gt; (&amp;gt; 1 2)&lt;br /&gt;
; NIL&lt;br /&gt;
; [6]&amp;gt; (= 2 1)&lt;br /&gt;
; NIL&lt;br /&gt;
; [7]&amp;gt; (= 2 2)&lt;br /&gt;
; T&lt;br /&gt;
****&lt;br /&gt;
&lt;br /&gt;
&quot;(&amp;lt; 1 2)&quot;を見てみると、1は2より小さいのでこの場合はT(真)を返しています。次に&quot;(&amp;lt; 2 1)&quot;を見てみると、1は2より大きくないのでNIL(偽)を返しています。&quot;&amp;gt;&quot;は&quot;&amp;lt;&quot;の逆関係、&quot;=&quot;は同値関係を調べるときに使われます。また、文字列の同値関係も調べたい場合は次のequal関数を使います。&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;strong&gt;(equal 引数1 引数2)&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;
; [1]&amp;gt; (equal 'abc 'def)&lt;br /&gt;
; NIL&lt;br /&gt;
; [2]&amp;gt; (equal 'abc 'abc)&lt;br /&gt;
; T&lt;br /&gt;
; [3]&amp;gt; (equal 2 2)&lt;br /&gt;
; T&lt;br /&gt;
; [4]&amp;gt; (equal 2 3)&lt;br /&gt;
; NIL&lt;br /&gt;
; [5]&amp;gt; (equal 'abc 3)&lt;br /&gt;
; NIL&lt;br /&gt;
****&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;論理演算子を使ってみよう&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
論理演算子とは真(True)か偽(False)の値しかもたないデータの演算のことをいいます。具体的には&quot;not&quot;,&quot;and&quot;,&quot;or&quot;などです。使い方は&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;strong&gt;(not 引数)&lt;/strong&gt;&quot;&lt;br /&gt;
&quot;&lt;strong&gt;(and 引数1 引数2 ...)&lt;/strong&gt;&quot;&lt;br /&gt;
&quot;&lt;strong&gt;(or 引数1 引数2 ...)&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
などと記述します。論理演算子も返り値は&quot;&lt;strong&gt;T&lt;/strong&gt;&quot;または&quot;&lt;strong&gt;NIL&lt;/strong&gt;&quot;になります。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;; [1]&amp;gt; (and (&amp;lt; 1 2) (&amp;lt; 3 4) (&amp;lt; 5 6))&lt;/div&gt;
&lt;div&gt;; T&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (and (&amp;lt; 1 2) (&amp;lt; 3 4) (&amp;gt; 5 6))&lt;/div&gt;
&lt;div&gt;; NIL&lt;/div&gt;
&lt;div&gt;; [3]&amp;gt; (or (&amp;lt; 1 2) (&amp;lt; 3 4) (&amp;gt; 5 6))&lt;/div&gt;
&lt;div&gt;; T&lt;/div&gt;
&lt;div&gt;; [4]&amp;gt; (or (&amp;gt; 1 2) (&amp;gt; 3 4) (&amp;gt; 5 6))&lt;/div&gt;
&lt;div&gt;; NIL&lt;/div&gt;
&lt;div&gt;; [5]&amp;gt; (not (or (&amp;gt; 1 2) (&amp;gt; 3 4) (&amp;gt; 5 6)))&lt;/div&gt;
&lt;div&gt;; T&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
and関数は引数が全て真であれば真を返り値として返すものです。&quot;(and (&amp;lt; 1 2) (&amp;lt; 3 4) (&amp;lt; 5 6))&quot;では、引数の値が全て真になるので真を返します。ところが、下の&quot;(and (&amp;lt; 1 2) (&amp;lt; 3 4) (&amp;gt; 5 6))&quot;では第3引数である&quot;(&amp;gt; 5 6)&quot;の値が偽となるので偽を返します。&lt;br /&gt;
&lt;br /&gt;
or関数は引数がひとつでも真であれば真を返り値として返すものです。&quot;(or (&amp;lt; 1 2) (&amp;lt; 3 4) (&amp;gt; 5 6))&quot;では第1引数と第2引数が真であるので真を返します。ところが、下の&quot;(or (&amp;gt; 1 2) (&amp;gt; 3 4) (&amp;gt; 5 6))&quot;では全ての引数が偽となるので偽を返します。&lt;br /&gt;
&lt;br /&gt;
not関数は引数が真であれば偽を返し、偽であれば真を返すものです。&quot;(or (&amp;gt; 1 2) (&amp;gt; 3 4) (&amp;gt; 5 6))&quot;は偽でしたのでnot関数で囲うと真を返します。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;条件分岐を使ってみよう&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;Lispには分岐を制御するcond関数とif関数が用意されています。&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;strong&gt;(cond (条件1 手続き1) (条件2 手続き2) ...)&lt;/strong&gt;&quot;&lt;br /&gt;
&quot;&lt;strong&gt;(if 条件 手続き 条件に当てはまらないときの手続き)&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
cond関数は条件をいくつでも記述することができ、条件1から順番に調べていきます。条件が真になり次第その手続きを行います。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;(defun absolute (x)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(cond ((&amp;lt; x 0) (- 0 x))&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((= x 0) 0)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((&amp;gt; x 0) x)))&lt;/div&gt;
&lt;div&gt;; [1]&amp;gt; (absolute 3)&lt;/div&gt;
&lt;div&gt;; 3&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (absolute 0)&lt;/div&gt;
&lt;div&gt;; 0&lt;/div&gt;
&lt;div&gt;; [3]&amp;gt; (absolute -3)&lt;/div&gt;
&lt;div&gt;; 3&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
3を入力した場合で考えてみましょう。absolute関数では初めの条件として&quot;(&amp;lt; x 0)&quot;が記述されています。それは入力した数値が0よりも小さければ真を返すという意味なので偽を返します。続いて&quot;(= x 0)&quot;では0であれば真を返すという意味なのでここでも偽を返します。最後の&quot;(&amp;gt; x 0)&quot;では入力した数値が0よりも大きければ真を返すという意味なので真を返してそこの手続きを行います。手続きでは入力した数値をそのまま返すというものなので3が表示されました。&lt;br /&gt;
&lt;br /&gt;
cond関数のよいところは条件をいくつでも記述ができることです。しかし、全ての条件に当てはまらないときは動作が保障されなくなってしまいます。それを防ぐ方法として最後の条件は必ず真になるようにします。つまり、条件を&quot;T&quot;とあらかじめ記述しておくのです。先ほどのabsolute関数では条件に当てはまらないということはないのですが、このように記述する癖をつけることで他の関数を定義するときに、条件がひとつも当てはまらなくなってしまうものがあるという可能性を事前に回避することができます。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;(defun absolute (x)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(cond ((&amp;lt; x 0) (- 0 x))&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((= x 0) 0)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(T x)))&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
if関数はcond関数とは違い条件をひとつしか記述することができませんが、手続きのなかにif関数を記述するとcond関数のように扱うこともできます。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;
(defun renum (x)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(if (&amp;lt; x 0)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(if (= x -3) 1 2)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0))&lt;br /&gt;

&lt;div&gt;; [1]&amp;gt; (absolute2 -3)&lt;/div&gt;
&lt;div&gt;; 1&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (absolute2 -2)&lt;/div&gt;
&lt;div&gt;; 2&lt;/div&gt;
&lt;div&gt;; [3]&amp;gt; (absolute2 0)&lt;/div&gt;
&lt;div&gt;; 0&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;演習&lt;br /&gt;
&lt;/strong&gt;if関数を用いて引数の絶対値を返す関数absolute2を定義せよ。&lt;br /&gt;
上の関数absoluteと同様に正数、0、負数の順で評価せよ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;演習解答&lt;/strong&gt;&lt;br /&gt;
****&lt;br /&gt;
(defun absolute2 (x)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(if (&amp;lt; x 0)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(- 0 x)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;x))&lt;br /&gt;

&lt;div&gt;; [1]&amp;gt; (absolute2 3)&lt;/div&gt;
&lt;div&gt;; 3&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (absolute2 0)&lt;/div&gt;
&lt;div&gt;; 0&lt;/div&gt;
&lt;div&gt;; [3]&amp;gt; (absolute2 -3)&lt;/div&gt;
&lt;div&gt;; 3&lt;/div&gt;
****&lt;br /&gt;
&lt;strong&gt;&lt;/strong&gt;</description> 
      <link>https://chouprogramming.blog-sim.com/lisp/%E7%9C%9F%E5%81%BD%E3%81%AE%E5%88%A4%E5%AE%9A%E3%82%92%E3%81%97%E3%82%88%E3%81%86</link> 
    </item>
    <item>
      <title>Lispの文字出力</title>
      <description>&lt;span style=&quot;font-size: large;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;Lispの&quot;Hello, World&quot;&lt;/span&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;br /&gt;
プログラミングで&lt;/span&gt;&lt;/span&gt;文字列を出力するとき、大抵の本にはこの文言が書かれていると思います。Lispで文字列を出力するときはformat関数を使います。この関数にはいろいろな使い方があってすべてを把握するのは大変ですが&quot;Hello, World&quot;を出力するだけなら簡単に扱うことが出来ます。&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;strong&gt;(format t &quot;文字列&quot;)&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
このようにすれば文字列を出力することができます。format関数の後ろにあるtは標準出力に出力することを表します。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;
; [1]&amp;gt; (format t &quot;Hello, World&quot;)&lt;br /&gt;
; Hello, World
&lt;div&gt;; NIL&lt;/div&gt;
****</description> 
      <link>https://chouprogramming.blog-sim.com/lisp/lisp%E3%81%AE-hello-%20world-</link> 
    </item>
    <item>
      <title>Lispの関数定義</title>
      <description>&lt;strong&gt;関数を定義しよう&lt;br /&gt;
&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;目的に合った処理をさせるために関数を自分で作ることができます。関数を定義するためには定義をするための関数を使います。&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;strong&gt;(defun 関数名 (仮引数1 仮引数2 ...) 仮引数を含む手続き)&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
仮引数とは実際の具体的な数字や文字などではなく、手続きに組み込まれる予定の仮の値のことを仮引数といいます。そこに1や2など、実際の値(実引数)が読み込まれるたびに順次置換されていきます。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;
(defun add (x y) (+ x y))&lt;br /&gt;
****&lt;br /&gt;
&lt;br /&gt;
これで関数の定義はできました。関数の使い方は前の記事のとおり&quot;&lt;strong&gt;(関数名 引数1 引数2&amp;nbsp;&lt;/strong&gt;&lt;strong style=&quot;border: 0px; font-family: メイリオ, Meiryo, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'ＭＳ Ｐゴシック', sans-serif; font-size: 13px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; list-style: none; line-height: 22.1000003814697px; color: #414244; background-color: #fafafa;&quot;&gt;...&lt;/strong&gt;&lt;strong&gt;)&lt;/strong&gt;&quot;です。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;; [1]&amp;gt; (add 2 3)&lt;/div&gt;
&lt;div&gt;; 5&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;引数がない関数の定義をしよう&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;関数の定義は必ず引数がなくとも定義することができます。使い方の使い方の例を見てみましょう。&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;strong&gt;(defun 関数名 () 仮引数がない手続き)&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;(defun three () (+ 1 2))&lt;br /&gt;
; [1]&amp;gt; (three)&lt;br /&gt;
; 3&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;(defun tmp () (three))&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (tmp)&lt;/div&gt;
&lt;div&gt;; 3&lt;/div&gt;
&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
文字を扱う場合は前にアポストロフィを記述します。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;(defun moji () 'test)&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (moji)&lt;/div&gt;
&lt;div&gt;; TEST&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
引数なしの関数を定義するものに類似としてsetq関数があります。&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;strong&gt;(setq 変数 値)&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
変数とは値を格納しておくデータ名のことです。defun関数と違う点は変数なので新たな関数に組み込むことができます。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;(setq ten 10)&lt;/div&gt;
&lt;div&gt;; [1]&amp;gt; ten&lt;/div&gt;
&lt;div&gt;; 10&lt;/div&gt;
&lt;div&gt;(defun add () (+ ten 3))&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (add)&lt;/div&gt;
&lt;div&gt;; 13&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;関数名を定義しない関数を定義しよう&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;関数名を定義しないその場限りの関数も定義することができます。&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;strong&gt;((lambda (仮引数1 仮引数2 ...) 仮引数を含む手続き) 実引数1 実引数2 ...)&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;((lambda (x) (* x x x x)) 3)&lt;/div&gt;
&lt;div&gt;; 81&lt;br /&gt;

&lt;div&gt;((lambda (x y) (- x y)) 5 2)&lt;/div&gt;
&lt;div&gt;; 3&lt;/div&gt;
&lt;/div&gt;
****&lt;br /&gt;
lamda関数に類似の関数としてlet関数と呼ばれるものがあります。2つの関数の違いとしてlet関数はdefun関数に組み込むことができます。&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;strong&gt;(let ((仮引数1 実引数1)&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;(仮引数2 実引数2) ...) 仮引数を含む手続き&lt;/strong&gt;&lt;strong&gt;)&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;(defun sum ()&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (let ((tmp1 5)&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(tmp2 3))&lt;/div&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(+ tmp1 (+ tmp1 tmp2))))&lt;/div&gt;
&lt;div&gt;; [1]&amp;gt; (sum)&lt;/div&gt;
&lt;div&gt;; 13&lt;/div&gt;
****&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;演習&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
文字列chou-programmingを引数なしの関数kansuu1と定義し、kansuu1を評価せよ。&lt;br /&gt;
kansuu1を使って文字列chou-programmingを返すkansuu2を定義し、評価せよ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;演習解答&lt;/strong&gt;&lt;br /&gt;
****&lt;br /&gt;
(defun kansuu1 () 'chou-programming)&lt;br /&gt;
; [1]&amp;gt; (kansuu1)&lt;br /&gt;
; CHOU-PROGRAMMING&lt;br /&gt;
(defun kansuu2 () (kansuu1))&lt;br /&gt;
; [2]&amp;gt; (kansuu2)&lt;br /&gt;
; CHOU-PROGRAMMING&lt;br /&gt;
****</description> 
      <link>https://chouprogramming.blog-sim.com/lisp/%E9%96%A2%E6%95%B0%E3%81%AE%E5%AE%9A%E7%BE%A9</link> 
    </item>
    <item>
      <title>Lispの演算</title>
      <description>&lt;strong&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;strong&gt;最初に&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
・開発環境はwindows7(64bit)。&lt;br /&gt;
・特に記述が無い場合はCLISP(ver2.49)を使う。&lt;br /&gt;
・Lispの始まりと終わりは****で区切る。&lt;br /&gt;
・関数の定義以外の部分は&quot;;&quot;を先頭に記述する。&lt;br /&gt;
・コードはGitHubからダウンロードできる。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;インタプリタを起動する&lt;/span&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
コマンドプロンプトを立ち上げたら&quot;&lt;strong&gt;clisp&lt;/strong&gt;&quot;と入力する。&lt;br /&gt;

&lt;div&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;strong&gt;インタプリタを終了する&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
終了するときは&quot;&lt;strong&gt;(exit)&lt;/strong&gt;&quot;もしくは&quot;&lt;strong&gt;(bye)&lt;/strong&gt;&quot;と入力する。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;簡単な計算をしてみよう&lt;/span&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
Lispでなにか処理をさせたい場合は関数と呼ばれるものを使います。例えばある数字とある数字を足したいときは関数である&quot;+&quot;を使います。また関数が使うデータのことを引数と呼びます。先の例での引数はある数字のことです。&lt;br /&gt;
&lt;br /&gt;
記述の仕方は&quot;&lt;strong&gt;(関数名 引数1 引数2 ...)&lt;/strong&gt;&quot;と必ず括弧の中に記述します。&lt;br /&gt;
先の例で記述すると&quot;&lt;strong&gt;(+ ある数字 ある数字)&lt;/strong&gt;&quot;となります。&lt;br /&gt;
&lt;br /&gt;
四則演算の関数&lt;br /&gt;
加算：&quot;+&quot;&lt;br /&gt;
減算：&quot;-&quot;&lt;br /&gt;
乗算：&quot;*&quot;&lt;br /&gt;
除算：&quot;/&quot;&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;

&lt;div&gt;; [1]&amp;gt; (+ 1 2)&lt;/div&gt;
&lt;div&gt;; 3&lt;/div&gt;
&lt;div&gt;; [2]&amp;gt; (- 1 2)&lt;/div&gt;
&lt;div&gt;; -1&lt;/div&gt;
&lt;div&gt;; [3]&amp;gt; (* 2 3)&lt;/div&gt;
&lt;div&gt;; 6&lt;br /&gt;

&lt;div&gt;; [4]&amp;gt; (/ 7 2)&lt;/div&gt;
&lt;div&gt;; 7/2&lt;br /&gt;
****&lt;br /&gt;
&lt;br /&gt;
&lt;span size=&quot;4&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;複雑な計算をしてみよう&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;上では2つの引数を使いましたが、それ以上の引数を使うことができますし、計算結果を1つの引数として使うこともできます。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;
; [1]&amp;gt; (+ 1 2 3 4 5)&lt;br /&gt;
; 15&lt;br /&gt;
; [2]&amp;gt; (- 30 2 3 4 5)&lt;br /&gt;
; 16&lt;br /&gt;
; [3]&amp;gt; (/ 36 6 3)&lt;br /&gt;
; 2&lt;br /&gt;
; [4]&amp;gt; (+ (- 8 (/ 6 3)) (* 7 2))&lt;br /&gt;
; 20&lt;br /&gt;
****&lt;br /&gt;
&lt;br /&gt;
引数がたくさんある場合、左から順番に処理をします。&quot;(/ 36 6 3)&quot;を見てください。左側から処理をするのであれば36を6で割り、その答えを3で割ります。その結果答えは2となります。6を3で割りその答えを使って36を割ると、結果は18となり答えが変わってしまいます。&lt;br /&gt;
&lt;br /&gt;
同様に&quot;(+ (- 8 (/ 6 3)) (* 7 2))&quot;も考えてみましょう。一番外側の括弧は関数&quot;+&quot;を使っています。その引数は&quot;(- 8 (/ 6 3))&quot;と&quot;(* 7 2)&quot;です。この2つの引数も同様に関数を使って計算をしていますので&quot;(- 8 (/ 6 3))&quot;に注目して考えてみましょう。一番外側の括弧は関数&quot;-&quot;を使っています。その引数は&quot;8&quot;と&quot;(/ 6 3)&quot;です。&quot;8&quot;は計算をする必要はありませんが&quot;(/ 6 3)&quot;はさらに計算が出来ます。&quot;(/ 6 3)&quot;の結果は2です。つまり&quot;(- 8 2)&quot;となり結果は6となります。&quot;(* 7 2)&quot;に注目すると結果は14となので&quot;(+ (- 8 (/ 6 3)) (* 7 2))&quot;と&quot;(+ 6 14)&quot;は同じ式として表すことができ、計算結果は20となります。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;strong&gt;整数型と実数型&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
計算する時に整数の部分のみを取り出した整数型と実数の近似を表現できる実数型は使い分けることができます。計算で1つでも実数型が含まれていれば、その計算は実数型として計算されます。逆に、1つでも実数型が含まれていなければその計算は整数型として計算されます。分数の計算では実数型を使っていれば小数点まで表示されますが、整数型のみだと分数表示されます。&lt;br /&gt;
&lt;br /&gt;
****&lt;br /&gt;
; [1]&amp;gt; (+ 2 3)&lt;br /&gt;
; 5&lt;br /&gt;
; [2]&amp;gt; (+ 2.0 3.0)&lt;br /&gt;
; 5.0&lt;br /&gt;
; [3]&amp;gt; (+ 2 3.0)&lt;br /&gt;
; 5.0&lt;br /&gt;
; [4]&amp;gt; (+ 2.0 3)&lt;br /&gt;
; 5.0&lt;br /&gt;
; [5]&amp;gt; (+ (* 3.0 4) 5)&lt;br /&gt;
; 17.0&lt;br /&gt;
; [6]&amp;gt; (/ 2 4)&lt;br /&gt;
; 1/2&lt;br /&gt;
; [7]&amp;gt; (/ 2 4.0)&lt;br /&gt;
; 0.5&lt;br /&gt;
; [8]&amp;gt; (/ 13 7.0)&lt;br /&gt;
; 1.8571428&lt;br /&gt;
****&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;演習&lt;br /&gt;
&lt;/strong&gt;次の式を評価せよ。&lt;br /&gt;
1. (/ 1 (/ 15 3))&lt;br /&gt;
2. (/ 1 (/ 15.0 3))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;演習解答&lt;/strong&gt;&lt;br /&gt;
****&lt;br /&gt;
; [1]&amp;gt; (/ 1 (/ 15 3))&lt;br /&gt;
; 1/5&lt;br /&gt;
; [2]&amp;gt; (/ 1 (/ 15.0 3))&lt;br /&gt;
; 0.2&lt;br /&gt;
****&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description> 
      <link>https://chouprogramming.blog-sim.com/lisp/lisp%E3%81%AE%E5%9F%BA%E6%9C%AC</link> 
    </item>
    <item>
      <title>Lispとは</title>
      <description>&lt;span style=&quot;color: #414244; font-family: メイリオ, Meiryo, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'ＭＳ Ｐゴシック', sans-serif; font-size: 13px; line-height: 18.2000007629395px; text-align: right; background-color: #fafafa;&quot;&gt;&lt;a href=&quot;http://ja.wikipedia.org/wiki/LISP&quot; title=&quot;&quot;&gt;Lispとは&lt;/a&gt;(リンク先：Wikipedia)&lt;br /&gt;
&lt;br /&gt;
　Lispはプログラミングの組む感覚が非常に強い言語です。プログラミングの面白さに触れてみたいのであればこの言語をおすすめします。現実ではアプリケーションや金融関係の決済システムで使われていますが、CやJavaと比べると使う人は少ないでしょう。&amp;nbsp;&lt;/span&gt;</description> 
      <link>https://chouprogramming.blog-sim.com/lisp/lisp%E3%81%A8%E3%81%AF%E3%81%AA%E3%82%93%E3%81%9E%EF%BC%9F</link> 
    </item>

  </channel>
</rss>