連立1次方程式Ax=bの解法:公式にしたがって解くのは,計算量大
|
|
|
- ひろじ がうん
- 7 years ago
- Views:
Transcription
1 Common Lisp プログラミング入門 概要 Lisp は記号の構造的な表現である S 式を操作するインタープリタ方式を基調とするプログラミング言語である. ここでは, 思考のツールとしての Lisp を強調した解説を行う.. Lisp のしくみ Lisp で中心となるのは,S 式 (Symbolic Expression) と呼ばれる記号の構造的な表現である.Lisp ユーザはインタープリタを使って,S 式を作り出したり, 変形したり, 探索したりできる. Lisp の特色の一つに, リフレクションがある.S 式はデータであるが, プログラムを表現するためにも用いられる. プログラムを表現した S 式を eval という関数を通して実行すると, プログラムとして解釈実行される.Lisp インタープリタは,read-eval-print ルーチンを繰り返す. すなわち, 入力として S 式であらわされたプログラムとデータを受け取り, その解釈実行を行って, 結果を返す. 2. Lisp インタープリタの動かし方では, 早速,Lisp インタープリタを動かしてみよう.Lisp インタープリタ を起動すると, ユーザとやりとりするためのプロンプトが現れる. GCL (GNU Common Lisp) ANSI Dec :55:59 Source License: LGPL(gcl,gmp), GPL(unexec,bfd) Binary License: GPL due to GPL'ed components: (UNEXEC) Modifications of this banner must retain notice of a compatible license Dedicated to the memory of W. Schelter Use (help) to get some basic information on how to use GCL. > 最後の > のあとに, ユーザが S 式を入力すると, その評価が行われ, その結果が表示される. 停止するためには,(bye) という S 式を入力するか, もっと乱暴にウィンドウを閉じてもよい. 2. 電卓 としての Lisp Lisp インタープリタの最も単純な使い方は電卓である. ユーザが (expt 4) という S 式を入力したときのやりとりは, >(expt 4) 波線部分 ( プラス Enter) はユーザからの入力であることを示す. 8 Lisp からの出力. 上記の S 式を 評価 した結果が 8 という S 式で表されていることを示す. > 次の入力待ちであることを示すプロンプト 以下では,Gnu Common Lisp による. /
2 となる. これは,Lisp インタープリタがユーザの入力 (read) した S 式 (expt 4) の表す計算式 4 expt(,4) の値を計算 ( 以下では, 評価 (eval[uate]) と呼ぶ ) した結果である 8 を 8 という S 式で表示 (print) したことを示している. 最も原始的な S 式は, アトムと呼ばれるものであり, x xg6 a string などがある. このなかで,x や xg6 はリテラルアトムと呼ばれ, 評価された場合は変数として扱われる 2. それ以外は定数であり, それを評価するとそれ自体になる. >8 8 8 を評価すると,8 になる. リテラルアトムへの値の対応づけを行うためには,(setq リテラルアトム S 式 ) という S 式を用いる. >(setq x2 00) 00 リテラルアトム x2 に S 式 00 を評価した 00 という値が対応づけられた. (setq x2 00) という S 式自体を評価した値も 00 である. >x2 00 リテラルアトム x2 を評価すると,00 になる. アトム以外の S 式は, リスト形式の S 式は括弧に挟まれ, 個々の要素は つまたはそれ以上の空白によって区切られている. ( 番目の S 式 2 番目の S 式 n 番目の S 式 ) たとえば, 次のものはすべて S 式である. ( 2 ) (A (B C) ( 2 ) (0. (0.00 X))) ((((((A B) C) D) E) F) G) 2 リテラルアトムの場合は, 大文字と小文字の区別はされない. 真を表す T と偽および空リストを表す NIL は外的に定数として扱われる. 2 /
3 これらは単なるデータであるが, 先にみたように,Lisp インタープリタに与えられて, 評価の対象となるときは, 式としての形式と意味を持つように作られなければならない. 一般に,Lisp では, f a,, a ) という関数は, ( n ( f の S 式表現 a の S 式表現 a n の S 式表現 ) という格好の S 式で表される. 加算 a + + an と乗算 a an に対応する S 式はやや外的であり, いずれも不定個の引数を取る関数 + a,, a ), ( a,, a ) として次のように S 式表現される. ( n * n (+ a の S 式表現 a n の S 式表現 ) a + + an の S 式表現 (* a の S 式表現 a n の S 式表現 ) a an の S 式表現 これらを組み合わせると, 次のような S 式表現を構成できる. ( ) (+ (* 2 ) (* 4 (- 5 6))) (5 6) 2 2 (sqrt (+ (expt 2) (expt 4 2))) + 4 以上を組み合わせると次のような処理ができる. >(setq x ) >(setq y 4) 4 >(sqrt (+ (expt x 2) (expt y 2))) 5.0 >(setq z (/ (+ x y) 2)) 7/2 >(* z 2) 関数を定義する関数の定義には (defun 関数名を表すリテラルアトム 引数リスト S 式 S 式 ) /
4 をもちいる. この関数は与えられた引数リストへの値の対応づけに基づいて S 式 S 式 を順に評価し, 最後の S 式 の値をその関数の値とする. 普通の場合は, S 式 は 個である. 複数の S 式 を指定できるようにした理由は割愛する. >(defun average (x y) (/ (+ x y) 2)) AVERAGE 上の S 式を評価したときの値はリテラルアトム average となる ( 重要ではない ). >(average 4 8) 6 2. 条件分岐他のプログラミング言語と同様に Lisp にも様々な条件分岐の方法がある. 取りあえず, 次の 2 つを押さえておこう. 第一番目は, (if S 式 S 式 2 S 式 ) S 式 を評価した結果が非 NIL であれば, S 式 2 を評価した結果をこの式の値とし, S 式 を評価した結果が NIL であれば, S 式 2 を評価した結果をこの式の値とする. >(setq x -5) -5 >(if (> x 0) -) - より多くの条件分岐を一度に計算するのが cond[itional] である. (cond ( S 式 A S 式 B ) ( S 式 n A S 式 n B )) S 式 i A を i= から順に評価し, 初めて非 NIL になった i に対して, S 式 i B を評価した結果をこの式の値とする. >(setq x -5) -5 >(cond ((= x -7) 0) (= x -6) ) (= x -5) 2) (t 0)) 2 となる. 4 /
5 Lisp は帰納関数論から生まれているので, 再帰的な定義は自在にできる.n の階乗を計算する関数 factorial を定義してみよう. 数学的には, if n = 0 factorial( n ) = n factorial(n -) otherwise であるから, 関数 factorial の中心部分は, (cond ((= n 0) ) (T (* n (factorial (- n))))) であることがわかる. このモチーフに基づいて Lisp インタープリタを動かせば次のようになる. >(defun factorial (n) (cond ((= n 0) ) (T (* n (factorial (- n)))))) FACTORIAL >(factorial 5) 20 >(factorial 40) 関数 (trace x) は,x で与えられた関数の動きをトレース ( 追跡 ) する. >(trace factorial) (FACTORIAL) >(factorial 6) > (FACTORIAL 6) 2> (FACTORIAL 5) > (FACTORIAL 4) 4> (FACTORIAL ) 5> (FACTORIAL 2) 6> (FACTORIAL ) 7> (FACTORIAL 0) <7 (FACTORIAL ) <6 (FACTORIAL ) <5 (FACTORIAL 2) <4 (FACTORIAL 6) < (FACTORIAL 24) <2 (FACTORIAL 20) < (FACTORIAL 720) /
6 2.4 S 式の基本操作 Lisp という名前は List Processor( リスト処理システム ) に由来している. リスト構造を自在に扱えるところが Lisp の強みである. 歴史的な理由もあり,S 式の操作にはやや微妙なところもあるが, はじめのうちはなるべくそこに立ち入らないようにしておきたい. 最も基本的なものは, 変数への S 式のセット,S 式の組み立て,S 式の各部へのアクセスである. S 式はデータであるので, 変数 x に S 式 (A (B C) (D E)) を対応づけようとして,(setq x 5) の時と同様に >(setq x (A (B C) (D E))) と入力すると,Lisp インタープリタから次のようなエラーメッセージがたちどころに返される. Error in SETQ [or a callee]: The function A is undefined. Fast links are on: do (use-fast-links nil) for debugging Broken at SETQ. Type :H for Help. (Abort) Return to top level. dbl:>> これは Lisp インタープリタが,(A (B C) (D E)) を式だと思って評価しようとして, 関数 A の定義を探そうとして見つからなかったため, エラーの起きたところでブレークループに入ったことを示している. Lisp インタープリタに S 式 x をデータとして渡すためには, (quote x) あるいは, x という表現を使う. 上のの場合は, >(setq x (A (B C) (D E))) (A (B C) (D E)) >(length x) となる. リスト構造を作り上げるための基本的な関数は list と append である. すなわち, (list a の S 式表現 a n の S 式表現 ) 6 /
7 ( a の S 式表現の評価結果 a n の S 式表現の評価結果 ) となる. >(list 2 (+ 2) (* 2 2) (sqrt (+ (expt 2) (expt 4 2)))) ( 2 4 5) となる. (append a の S 式表現 a n の S 式表現 ) a の S 式表現の評価結果 a n の S 式表現の評価結果 を一つのリストにつないだもの >(append ( 2) (() (4)) (list a (b c))) ( () (4) a (b c)) このようにして作られたリストから要素を取り出したり, 型判定を行ったりするには, 次のような関数を用いる. (atom S 式 ) S 式 がアトムならば T, さもなければ NIL を返す. >(atom.4) T >(atom (list a (b c))) NIL (null S 式 ) S 式 が NIL ならば T, さもなければ T を返す.NIL と要素をもたないリスト () は同一であることに注意. >(null NIL) T >(null ()) 7 /
8 T (first S 式 ) (second S 式 ) (tenth S 式 ) それぞれ, S 式 ( リストでなければならない ) の 番目 ~0 番目のアイテムを返す. >(sixth ( )) 6 (nth n x) リスト x の前から n+ 番目の要素を返す. >(nth 5 ( )) 6 (fifth s) は (nth 4 s) と同じであり,(nth 5 s) とは異なるので注意. (last x) リスト x の最後の要素を返す. >(last ( )) リストとドット対前項が示唆しているように,Lisp におけるリストは左右非対称の構造になっている. それは, (a b c d e) というリスト構造は, 実は, ドット対 (a. (b. (c. (d. (e. NIL))))) のマクロ表現であることに対応している. これに応じて, (cons x y) x と y から成るドット対 (x. y) を作る. 8 /
9 >(cons a b) (A. B) >(cons a (b c)) (A B C) なぜならば, 上記の結果は,(A. (B. (C. NIL))) であり, これは (A B C) に等しい. `(a a n ) a a n から成るリストを構成する. ここで a i は S 式 または, S 式 という格好をしている. 後者は S 式の前にコンマがついている.a i が S 式 のときは, そのデータをそのまま使用する.a i が, S 式 という格好をしているときは, その S 式を評価した値を用いる. >`(= (+ 2 ),(+ 2 )) (= (+ 2 ) 6) となる. 非常に便利なマクロである. (car s) s はドット対 (x. y) でなければならない. このとき (car s) はドット対第 番目の要素 x を返す. >(car (a. b)) A >(car ( 2 4 5)) (cdr s) s はドット対 (x. y) でなければならない. このとき (cdr s) はドット対第 2 番目の要素 y を返す. >(cdr (a. b)) B >(cdr ( 2 )) 9 /
10 (2 ) 引数の値は,(. (2. (. NIL))) であるから cdr 値は (2. (. NIL)) に等しい. 練習問題与えられた S 式 s の中にアトム x があれば T, さもなければ NIL を返すプログラム (INCLUDED? x s) を定義せよ. 練習問題与えられた S 式 s に含まれるアトム x の個数を数えるプログラム (HOW-MANY x s) を定義せよ. 2.6 便利なデータ構造いくつかのデータ構造があり, プログラミングの補助として使える. (make-array (list i i n )) 第 次元が 0~i -,, 第 n 次元が 0~i n - までのインデクスをもつ n 次元配列オブジェクトを生成する. (aref a x x n ) n 次元配列オブジェクト a から, 第 次元のインデクスが x,, 第 n 次元のインデクスが i n の要素を取り出す. (setf (aref a x x n ) v) n 次元配列オブジェクト a から, 第 次元のインデクスが x,, 第 n 次元のインデクスが i n の要素を v にセットする. >(setq x (make-array '(4 4 4))) #A(((NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL)) ((NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL)) ((NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL)) ((NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL))) >(aref x 2 ) NIL >(setf (aref x 2 ) 'a) A >x #A(((NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL) 0 /
11 (NIL NIL NIL NIL)) ((NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL A) (NIL NIL NIL NIL)) ((NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL)) ((NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL))) >(aref x 2 ) A (assoc x a) ((k. v ) (k n. v n )) と言う格好をした連想リスト a から k i =x となる最初の i を探し,(k i. v i ) を返す. >(assoc 'i '((she. kanojo) (he. kare) (i. watashi))) (I. WATASHI) >(assoc 'thou '((she. kanojo) (he. kare) (i. watashi))) NIL 2.7 おいもプログラム Lisp は関数型プログラミング言語と呼ばれているが, 思考のツールとしてはそれだけでは使いづらいので, 普通の副作用型のプログラミング機構も用意されている. (let* ((i v ) (i m v m )) s s n ) 局所変数 i i m に v v m の各々を評価した値を順に対応づけたうえで,S 式 s s n を順に評価し, 最後に評価した s n の値をこの式の値とする. >(let* ((x 2) (y ) (z nil)) (setq z (+ x y)) `(,x +,y =,z)) (2 + = 5) (loop s s n ) S 式 s s n を順に評価しつづける. そのなかで (return v) が実行されると,v の評価した値をもってこの式の実行は終わる. >(let* ((x )) (loop (if (= x 00) (return 99) nil) /
12 (setq x (+ x)))) 99 (dotimes (x n) s s n ) 変数 x の値を 0 から n を評価した値まで順に増加させていき, それぞれの値に対して, s s n を順に評価する. ただし,(return v) が実行されると,v の評価した値をもってこの式の実行は終わる. >(dotimes (x (* 5 2)) (print x)) 0 (print 0) が実行された副作用 (print ) が実行された副作用 2 (print 2) が実行された副作用 (print ) が実行された副作用 4 (print 4) が実行された副作用 5 (print 5) が実行された副作用 6 (print 6) が実行された副作用 7 (print 7) が実行された副作用 8 (print 8) が実行された副作用 9 (print 9) が実行された副作用 NIL 式全体の評価結果 >(dotimes (x (* 5 2)) (print x) (if (> x ) (return))) NIL (dolist (x s) s s n ) S 式 s を評価して得られたリスト (a a n ) の要素 a i を順に変数 x に対応づけた上で, s s n を順に評価する. ただし,(return v) が実行されると,v の評価した値をもってこの式の実行は終わる. >(dolist (x ( 2 4 5)) (print x)) /
13 5 NIL >(dolist (x ( 2 4 5)) (print x) (if (= x ) (return three))) 2 THREE /
Microsoft PowerPoint - 2-LispProgramming-full
2013 年 5 月 31 日 Lisp プログラミング入門 西田豊明 Copyright 2013 Toyoaki Nishida All Rights Reserved. 今回あらすじ 1. Lisp の実践的な使い方を学習する. 2. Lisp インタープリタの動かし方, 電卓的使い方, 関数定義, 条件分岐,S 式の基本操作, プログラミング手法, プロトタイピング法などを中心に解説する.
r3.dvi
2012 3 / Lisp(2) 2012.4.19 1 Lisp 1.1 Lisp Lisp (1) (setq) (2) (3) setq defun (defun (... &aux...)...) ( ) ( nil ) [1]> (defun sisoku (x y &aux wa sa sho seki) (setq wa (+ x y)) (setq sa (- x y)) (setq
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき
gengo1-11
関数の再帰定義 自然数 n の階乗 n! を計算する関数を定義してみる 引数は整数 返却値も整数 n! = 1*2*3*... * (n 1)*n である ただし 0! = 1 とする int factorial(int n) int i, tmp=1; if( n>0 ) for(i=1; i
プログラミング実習I
プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 [email protected] 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,
情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤
情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤 2017.12.7 前回の演習問題の解答例 1. 四則演算のできる計算機のプログラム ( 括弧も使える ) 2. 実数の扱える四則演算の計算機のプログラム ( 実数 も というより実数 が が正しかったです ) 3. 変数も扱える四則演算の計算機のプログラム ( 変数と実数が扱える ) 演習問題 1 で行うべきこと
Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕
Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :
(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド
メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが
Si 知識情報処理
242311 Si, 285301 MS 第 12 回 竹平真則 [email protected] 2015/12/21 1 本日の内容 1. 先週のおさらい 2. PHP のスクリプトを実際に動かしてみる 3. RDB についての説明 2015/12/21 2 資料の URL http://peacenet.info/m2is 2015/12/21 3 注意事項 ( その
メソッドのまとめ
メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか
Microsoft Word - CygwinでPython.docx
Cygwin でプログラミング 2018/4/9 千葉 数値計算は計算プログラムを書いて行うわけですが プログラムには様々な 言語 があるので そのうちどれかを選択する必要があります プログラム言語には 人間が書いたプログラムを一度計算機用に翻訳したのち計算を実行するものと 人間が書いたプログラムを計算機が読んでそのまま実行するものとがあります ( 若干不正確な説明ですが ) 前者を システム言語
JavaプログラミングⅠ
Java プログラミング Ⅰ 2 回目 ようこそ Java へ 今日の講義で学ぶ内容 画面へのメッセージの表示 文字や文字列 数値を表現するリテラル 制御コードを表すエスケープシーケンス 画面出力の基本形 ソースファイル名 : クラス名.java class クラス名 System.out.println(" ここに出力したい文字列 1 行目 "); System.out.println(" ここに出力したい文字列
PowerPoint Template
プログラミング演習 Ⅲ Linked List P. Ravindra S. De Silva e-mail: [email protected], Room F-413 URL: www.icd.cs.tut.ac.jp/~ravi/prog3/index_j.html 連結リストとは? 一つひとつの要素がその前後の要素との参照関係をもつデータ構造 A B C D 連結リストを使用する利点 - 通常の配列はサイズが固定されている
kiso2-03.key
座席指定はありません Linux を起動して下さい 第3回 計算機基礎実習II 2018 のウェブページか ら 以下の課題に自力で取り組んで下さい 計算機基礎実習II 第2回の復習課題(rev02) 第3回の基本課題(base03) 第2回課題の回答例 ex02-2.c include int main { int l int v, s; /* 一辺の長さ */ /* 体積 v
PowerPoint Presentation
プログラミング基礎 第 2 週 (4,5,6 回 ) 2011-10-07 出村公成 この資料の再配布を禁止します 予定 プログラミング入門 (45 分 ) 変数 入出力 分岐 演習 (90 分 ) タッチタイプ練習 統合開発環境 Codeblocksの使い方 教科書例題の打ち込みと実行 プログラミング入門 C 言語の簡単な例を体験 変数 入出力 分岐 プログラムの例リスト 2.1 改 #include
Microsoft Word - VBA基礎(6).docx
あるクラスの算数の平均点と理科の平均点を読み込み 総点を計算するプログラムを考えてみましょう 一クラスだけ読み込む場合は test50 のようなプログラムになります プログラムの流れとしては非常に簡単です Sub test50() a = InputBox(" バナナ組の算数の平均点を入力してください ") b = InputBox(" バナナ組の理科の平均点を入力してください ") MsgBox
Functional Programming
PROGRAMMING IN HASKELL プログラミング Haskell Chapter 7 - Higher-Order Functions 高階関数 愛知県立大学情報科学部計算機言語論 ( 山本晋一郎 大久保弘崇 2013 年 ) 講義資料オリジナルは http://www.cs.nott.ac.uk/~gmh/book.html を参照のこと 0 Introduction カリー化により
第8回 関数
1 関数型プログラミング 第 8 回関数 萩野達也 [email protected] 2 関数定義 square n = n * n 与えられた数の 2 乗を計算する square 関数を定義している. 変数 square に 2 乗を計算する関数を束縛 (bind) したい. a = 10 変数 a に定数 10 を束縛する. square =... 3 高階関数 関数も値の一つである.
JavaプログラミングⅠ
Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double
プログラミング基礎I(再)
山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全
今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること
C プログラミング演習 1( 再 ) 4 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順
Cプログラミング1(再) 第2回
C プログラミング 1( 再 ) 第 2 回 講義では Cプログラミングの基本を学び演習では やや実践的なプログラミングを通して学ぶ 1 前回のレポートから 前回の宿題 数あてゲーム の説明において 次のように書いていたものがいた : これはコンピュータがランダムに設定した数字を人間が当てるゲームである この説明でどこかおかしなところはないだろうか? 2 コンピュータの用語と日常的な用語の違い 物理において
Microsoft PowerPoint - IntroAlgDs-05-4.ppt
アルゴリズムとデータ構造入門 2005 年 0 月 25 日 アルゴリズムとデータ構造入門. 手続きによる抽象の構築.2 Procedures and the Processes They generate ( 手続きとそれが生成するプロセス ) 奥乃 博. TUT Scheme が公開されました. Windows は動きます. Linux, Cygwin も動きます. 0 月 25 日 本日のメニュー.2.
コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol
コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include 2. #include /*troupper,islower,isupper,tolowerを使うため宣言*/ 3. 4. int get_n(char *); 5. void replace(char
Jacques Garrigue
Jacques Garrigue Garrigue 1 Garrigue 2 $ print_lines () > for i in $1; do > echo $i > done $ print_lines "a b c" a b c Garrigue 3 Emacs Lisp (defun print-lines (lines) (dolist (str lines) (insert str)
PowerPoint プレゼンテーション
講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる
プログラミング入門1
プログラミング入門 2 第 8 回表形式データ (1) 1 テーマ : 表形式データ (1) 配列と複合データを用いた表形式データ データの登録 データの検索 データの更新 実際的はソフトウェアでは 表形式データの ( 例えば データベースのデータ ) を利用する場面が非常に多く とても重要である そこで 表形式を扱うプログラミングを繰り返しとりあげる 2 テーマ : 表形式データ (1) 配列と複合データを用いた表形式データ
Taro-再帰関数Ⅲ(公開版).jtd
0. 目次 1 1. ソート 1 1. 1 挿入ソート 1 1. 2 クイックソート 1 1. 3 マージソート - 1 - 1 1. ソート 1 1. 1 挿入ソート 挿入ソートを再帰関数 isort を用いて書く 整列しているデータ (a[1] から a[n-1] まで ) に a[n] を挿入する操作を繰り返す 再帰的定義 isort(a[1],,a[n]) = insert(isort(a[1],,a[n-1]),a[n])
PowerPoint プレゼンテーション
プログラミング初級 第 7 回 2017 年 5 月 29 日 配列 ( 復習 )~ 文字列 1 配列とは 2 配列 : 複数の変数をグループとしてまとめて扱うもの 配列 変数 int data[10]; 整数型の配列 同種のデータ型を連続して確保したものを配列とよぶ = 整数がそれぞれにひとつずつ入る箱を 10 個用意したようなもの int data; 整数型の変数 = 整数がひとつ入る dataという名前の箱を用意したようなもの
PowerPoint プレゼンテーション
プログラミング応用演習 第 5 回演習 前回までのお話 ポインタ ポインタを用いた文字列処理 構造体 ファイル 再帰的構造体 リスト構造 動的メモリ管理 今日のお題 ポインタやファイルなど これまでの内容の練習 教材 以前 以下に単語を収録したファイルがあることを紹介した : /usr/share/dict/words この中からランダムに単語を取り出したファイルを用意した http://sun.ac.jp/prof/yamagu/2019app/
例 e 指数関数的に減衰する信号を h( a < + a a すると, それらのラプラス変換は, H ( ) { e } e インパルス応答が h( a < ( ただし a >, U( ) { } となるシステムにステップ信号 ( y( のラプラス変換 Y () は, Y ( ) H ( ) X (
第 週ラプラス変換 教科書 p.34~ 目標ラプラス変換の定義と意味を理解する フーリエ変換や Z 変換と並ぶ 信号解析やシステム設計における重要なツール ラプラス変換は波動現象や電気回路など様々な分野で 微分方程式を解くために利用されてきた ラプラス変換を用いることで微分方程式は代数方程式に変換される また 工学上使われる主要な関数のラプラス変換は簡単な形の関数で表されるので これを ラプラス変換表
次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1
4. ソート ( 教科書 p.205-p.273) 整列すなわちソートは アプリケーションを作成する際には良く使われる基本的な操作であり 今までに数多くのソートのアルゴリズムが考えられてきた 今回はこれらソートのアルゴリズムについて学習していく ソートとはソートとは与えられたデータの集合をキーとなる項目の値の大小関係に基づき 一定の順序で並べ替える操作である ソートには図 1 に示すように キーの値の小さいデータを先頭に並べる
バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科
バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (
memo
数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int
Microsoft PowerPoint - lectureNote13.ppt
i217 関数プログラミング第 13 回プログラム検証 2 二木厚吉 緒方和博 計算機による検証支援 SML のプログラム ( 関数 ) の性質を帰納法等により明らかにすることは可能である. つまり プログラムを検証 ( プログラムが望ましい性質を満たすことを証明 ) することは可能である. ただし SML の処理系は 検証 ( あるいは証明 ) を支援しない. 検証を支援するための計算機言語やツールがある.
Microsoft PowerPoint - algo ppt [互換モード]
( 復習 ) アルゴリズムとは アルゴリズム概論 - 探索 () - アルゴリズム 問題を解くための曖昧さのない手順 与えられた問題を解くための機械的操作からなる有限の手続き 機械的操作 : 単純な演算, 代入, 比較など 安本慶一 yasumoto[at]is.naist.jp プログラムとの違い プログラムはアルゴリズムをプログラミング言語で表現したもの アルゴリズムは自然言語でも, プログラミング言語でも表現できる
論理学補足文書 7. 恒真命題 恒偽命題 1. 恒真 恒偽 偶然的 それ以上分割できない命題が 要素命題, 要素命題から 否定 連言 選言 条件文 双 条件文 の論理演算で作られた命題が 複合命題 である 複合命題は, 命題記号と論理記号を 使って, 論理式で表現できる 複合命題の真偽は, 要素命題
7. 恒真命題 恒偽命題. 恒真 恒偽 偶然的 それ以上分割できない命題が 要素命題, 要素命題から 否定 連言 選言 条件文 双 条件文 の論理演算で作られた命題が 複合命題 である 複合命題は, 命題記号と論理記号を 使って, 論理式で表現できる 複合命題の真偽は, 要素命題の真偽によって, 真になる場合もあれば, 偽になる場合もある 例えば, 次の選言は, A, の真偽によって, 真にも偽にもなる
Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]
if 文 (a と b の大きい方を表示 ) C 言語 Ⅰ の復習 条件判定 (if, 条件式 ) ループ (for[ 二重まで ], while, do) 配列 ( 次元 次元 ) トレース int a, b; printf( 整数 a: ); scanf( %d, &a); printf( 整数 b: ); scanf( %d, &b); //つのif 文で表現する場合間違えやすい どっちに =
オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110,
オートマトン 形式言語及び演習 1 有限オートマトンとは 酒井正彦 wwwtrscssinagoya-uacjp/~sakai/lecture/automata/ 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110, } 形式言語 : 数学モデルに基づいて定義された言語 認識機械 : 文字列が該当言語に属するか? 文字列 機械 受理
Microsoft PowerPoint - IntroAlgDs-05-2.ppt
アルゴリズムとデータ構造入門 2005 年 10 月 11 日 アルゴリズムとデータ構造入門 1. 手続きによる抽象の構築 1.1 プログラムの要素 奥乃 博 1. TUT Schemeが公開されました. Windowsは動きます. Linux, Cygwin はうまく行かず. 調査中. 2. 随意課題 7の追加 友人の勉学を助け,TAの手伝いをする. 支援した内容を毎回のレポート等で詳細に報告.
文法と言語 ー文脈自由文法とLR構文解析2ー
文法と言語ー文脈自由文法とLR 構文解析 2 ー 和田俊和資料保存場所 http://vrl.sys.wakayama-u.ac.jp/~twada/syspro/ 前回までの復習 最右導出と上昇型構文解析 最右導出を前提とした場合, 上昇型の構文解析がしばしば用いられる. 上昇型構文解析では生成規則の右辺にマッチする部分を見つけ, それを左辺の非終端記号に置き換える 還元 (reduction)
つくって学ぶプログラミング言語 RubyによるScheme処理系の実装
Ruby Scheme 2013-04-16 ( )! SICP *1 ;-) SchemeR SICP MIT * 1 Structure and Interpretaion of Computer Programs 2nd ed.: 2 i SchemeR Ruby Ruby Ruby Ruby & 3.0 Ruby ii https://github.com/ichusrlocalbin/scheme_in_ruby
