タイトル

Size: px
Start display at page:

Download "タイトル"

Transcription

1 第 3 回バイオインフォマティクスアルゴリズム アラインメントアルゴリズム 慶應義塾大学先端生命科学研究所

2 基本的なアルゴリズム設計技法 再帰法 分割統治法 動的計画法

3 分割統治法とは? (1) 例 :(18, 37, 21, 14, 7, 12, 19, 6) を小さいものから順に並べ替えることを考える 最小値 2 番目に小さい値 3 番目に小さい値 を求めていくやり方では数列の長さを n とすると 計算量は O(n 2 )

4 分割統治法とは? (2) この問題を 2 つの部分に分割 : (18, 37, 21, 14) を並べ替え それとは別に (7, 12, 19, 6) も並べ替える (14, 18, 21, 37) と (6, 7, 12, 19) に並べ替えられた これを併合して (6, 7, 12, 14, 18, 19, 21, 37) 計算量は O(nlog n)

5 分割統治法とは? (3) n 2 log n (18, 37, 21, 14, 7, 12, 19, 6) (18, 37, 21, 14), (7, 12, 19, 6) (18, 37), (21, 14), (7, 12), (19, 6) (18), (37), (21), (14), (7), (12), (19), (6) (18, 37), (14, 21), (7, 12), (6, 19) (14, 18, 21, 37), (6, 7, 12, 19) (6, 7, 12, 14, 18, 19, 21, 37)

6 分割統治法とは? (4) 再帰式で表すと 関数 msort( 数列 ): 数列が空なら それをそのまま返す数列中の数が 1 つなら それをそのまま返す msort_left = msort( 前半部分の数列 ) msort_right = msort( 後半部分の数列 ) merge(msort_left, msort_right) を返 最初からまともに全部並べようとするより 問題を分割して解き 後で統合した方が早く解けるケースがる

7 途中計算の記録による無駄な計算の省略 ( フィボナッチ数列 ) fb(5) 1 fb(5) 1 fb(4) 2 fb(3) 7 fb(4) 2 fb(3) 7 fb(3) 3 fb(2) 6 fb(2) 8 fb(1) 9 fb(3) 3 fb(2) 6 fb(2) 4 fb(1) 5 fb(2) 4 fb(1) 5 (Before) (After)

8 動的計画法 分割統治法による問題の分割 途中計算の記録による高速化

9 アラインメントアルゴリズム

10 入手可能なゲノム (DNA) 配列の例 種 ゲノムサイズ 遺伝子数 大腸菌 4.6M 4,000 酵母菌 15M 6,000 線虫 100M 14,000 ショウジョウバエ 170M 12,000 ヒト 3,000M 25,000

11 ゲノム配列からまず知りたいこと 遺伝子領域はどこ? 機能は? 実験で確かめるのは時間と労力と費用がかか

12 相同性検索 既に実験的に確かめられた配列からマッチするものを探す 機能予測にも広く使われている 入力配 類似配 MLSAQERAAI MLSFVERATL データベー

13 配列は完全にマッチするとは限らない 塩基置 ATCAATCGATCGATC ATCCATTGAACCATC ATCAATCGATCGATC 挿 ATCAATCGAGGAGGATCGATC ATCAATCGATCGATC 欠 ATCAACGATC 配列の置換をどのように処理するか配列の挿入 欠損をどのように処理するか

14 アラインメント 置換 挿入 欠損を考慮して塩基配列あるいは アミノ酸配列の似た部分をそろえることギャップ - を挿入する CAAGACATTTTAC CATACACTTTAC CA-AGACATTTTAC CATACAC--TTTAC ** * ** *****

15 アラインメントの使用用途 遺伝子領域予測 遺伝子の機能予測 保存部位 モチーフ推定 系統樹作成

16 全体と一部のアラインメント グローバルアラインメント全体を揃えるようなアラインメント cggtc----acgtcgagtg cg-tacgt acgacgg--- ** * *** ** ローカルアラインメント一部をなるべく揃えるようなアラインメント cggtcacgtcgagtg cgtacgtacgtcgg ****

17 ヒトと大腸菌は同一祖先を持つ!? Human GCCCGTCGCTACTACCGATTGGA-TGGTTTAGTGAGGCCCTCGGATCGGCCCCGCCGGGG ::::::: : ::: :: ::: ::: :: : : : :: Ecoli GCCCGTCAC----ACC-ATGGGAGTGGGTTGCAAAAGAAGTAGG Human TCGGCCCACGGCCTGGCGGAGCGCTGAGAAGACGGTCGAACTTGACTATCTAGAGGAAGT : : :: : :: :: ::::: : : :: : ::::: : :: Ecoli TAGCTTAACCTTCGGGAGG-GCGCTTACCACTTTGTGATTCATGACT-----GGGGTG Human AAAAGTCGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTA ::::::::::::::: ::::::: :::::::::: :::::: Ecoli --AAGTCGTAACAAGGTAACCGTAGGGGAACCTGCGGTTGGATCACCTCCTTA ヒトの 18S rrna と大腸菌の 16S rrna のアラインメン

18 アラインメントを定式化する 良いアラインメント = スコアが高いアラインメントとすれば どのようなスコア体系にすればよいか? そのスコア体系の中で最大のスコアおよび対応するアラインメントをどのように求めればよいか?

19 単純なスコア体系 (1) 塩基がマッチしたときのスコア ( > 0 ) 塩基がマッチしないときのスコア ( < 0 ) ギャップのペナルティー ( < 0 )

20 単純なスコア体系 (2) 各位置のスコアを合計するだけ ( スコアの独立性 : 各位置のスコアは その位置だけで決まる ) ** x** * at-catgc atgaat-c マッチスコア 5 + ミスマッチペナルティー 1 + ギャップペナルティー 2

21 最適なスコアを計算するには? アラインメントの表現方法を決める 最大スコアの数学的な定義 ( 再帰的定義 ) 定義式の効率の良い計算方法

22 アラインメントはグラフで表現できる seq2 A A C G A seq1 C G A-CG AACG

23 演習問題 (1) 以下の経路に対応するアラインメントを示せ T A C G C A C T G

24 アラインメントの計算量 (1) 全通りの経路をしらみつぶしに調べれば最適解が求まる アラインメントをかける配列の長さ n が長くなると計算時間が急速に増える

25 アラインメントの計算量アラインメントの計算量 (2) (2) [ ] = + n k k n k k n n n )! (! )! (2!) ( )! (2 アラインメントの場合の数は AT-G A-CG A-TG AC-G とを同一とみなすなら n n n n π 2 2 2!) ( )! (2

26 計算量の改善 アラインメント最適スコアの再帰的定義 動的計画法の適用

27 最大スコアの数学的な定義を考える 再帰的定義的定義の復習 (1) 階乗の定義 1 n! = n x (n-1) x (n-2) x x 2 x 1 の部分の意味が不明瞭

28 最大スコアの数学的な定義を考える 再帰的定義的定義の復習 (2) 階乗の定義 2 n! = 1 n ( n 1)! for n 1 for n > 1 (1) (2) 階乗の定義の中に階乗がさらに登場することに注目 3! を求めると (2) より 3!=3x(3-1)! = 3x2! (2) より 3x2!=3x2x1! (1) より 3x2x1!=3x2x1=6

29 直前のノード MS(i,j) を位置 (i,j) における最大スコアと定義 MS(i-1,j-1) MS(i-1,j) +SC(seq1(i-1),seq2(j-1)) +GP MS(i,j-1) +GP MS(i,j) 但し seq(i) は配列 seqのi 番目の塩基 SC(a,b) は塩基 a,bがマッチしたときのスコア GPは一定 (i,j) を固定すれば SC(seq1(i-1),seq2(j-1)) も一定

30 最大スコアの最大スコアの再帰的再帰的定義定義 = = = 1)) 1),seq2( (seq1( 1) 1, ( ) 1, ( 1), ( max 0 0 or 0 if ), ( j i SC j i MS GP j i MS GP j i MS j i j i MS

31 本当に最大のスコア? MS(i,j) を位置 (i,j) における最大スコアと定義 GP は一定 (i,j) を固定すれば SC(seq1(i),seq2(i)) も一定 MS(i-1,j-1) MS(i-1,j) MS( i, j 1) + GP MS = max MS( i 1, j) + GP MS( i 1, j 1) + SC(seq1( i 1),seq2( j 1)) +SC(seq1(i-1),seq2(j-1)) +GP AS = AS -1 + GP AS -1 MS(i, j- MS(i,j-1) AS -1 +GP MS AS MS(i,j) AS = AS -1 + GP MS(i, j-1) + MS

32 #include <stdio.h> #define H 0 /* 横方向 */ #define V 1 /* 縦方向 */ #define D 2 /* 斜め方向 */ #define NDIR 3 /* 方向数 */ #define Gap_Penalty -5 /* ギャップペナルティ */ static char seq1[max_seq_len], seq2[max_seq_len]; /* 塩基配列 */ int find_max_score(int i, int j){ main(){ strcpy(seq1, "acg"); strcpy(seq2, "aacg"); printf("%d n", find_max_score(3, 4)); } if(i == 0){ max_score = 0; max_dir = H;} else if(j == 0){ max_score = 0; max_dir = V; } else { score_tmp[v] = find_max_score(i - 1, j) + Gap_Penalty; /* (i-1,j) までの最適スコアにギャップペナルティを足したもの */ score_tmp[h] = find_max_score(i, j - 1) + Gap_Penalty; /* (i,j-1) までの最適スコアにギャップペナルティを足したもの */ score_tmp[d] = find_max_score(i - 1, j - 1) + score(seq1[i - 1], seq2[j - 1]); /* (i-1,j-1) までの最適スコアにアラインメントスコアを足したもの */ } max_dir = find_max_elem(score_tmp, NDIR); /* score_tmp[v], score_tmp[h], score_tmp[d] のうちで最大の方向 (V,H,D) を求める */ max_score = score_tmp[max_dir]; /* 上記で求めた方向に対応する最大スコアを求める */ } return max_score; /* 最大スコアを返す */ C 言

33 2 つの関数を定義しよう int score(char a, char b); 入力された 2 つの文字が同一ならマッチスコア (+10) 異なるならミスマッチスコア (-7) を与える int find_max_elem(int score_tmp[], int ndir); 長さ ndir( 実際は縦 横 斜で 3 つ ) の配列 score_tmp[] の中で最大の要素が何番目にあるかを返す C 言

34 各ノードの情報を表す構造体 MS(i,j) struct { int score; /* そのノードに至ったときの最大スコア */ int direction; /* そのノードに到達して最大スコアになったときの直前のノードの方角 */ } score_path_matrix[max_seq_len][max_seq_len]; /* MAX_SEQ_LEN は扱える最大の配列長さ */ C 言

35 #!/usr/bin/perl w use strict; use vars qw($seq1 $seq2); *::Gap_Penalty = -5; sub find_max_score($$){ my($i, $j) my %score_tmp; my $max_dir; my $max_score; $seq1 = "acg"; $seq2 = "atcg"; my $seq1_len = length($seq1); my $seq2_len = length($seq2); printf("%d n", find_max_score($seq1_len, $seq2_len)); } if($i == 0){ $max_score = 0; $max_dir = "H"; } elsif($j == 0){ $max_score = 0; $max_dir = "V"; } else { $score_tmp{"v"} = find_max_score($i - 1, $j) + $::Gap_Penalty; $score_tmp{"h"} = find_max_score($i, $j - 1) + $::Gap_Penalty; $score_tmp{"d"} = find_max_score($i - 1, $j - 1) + score(substr($seq1, $i-1, 1), substr($seq2, $j-1, 1)); $max_dir = find_max_elem(%score_tmp); $max_score = $score_tmp{$max_dir}; } return $max_score; Perl

36 2 つの関数を定義しよう sub score($$); 入力された 2 つの文字が同一ならマッチスコア (+10) 異なるならミスマッチスコア (-7) を与える sub find_max_elem(%); $_{ V },$_{ H },$_{ D } を比較し もっとも大きい値を持つキー ( V, H または D ) を返す Perl

bioinfo-a10s-4_align

bioinfo-a10s-4_align 4 (2) ATCAATCGATCGATC ATCCATTGAACCATC ATCAATCGATCGATC ATCAATCGAGGAGGATCGATC ATCAATCGATCGATC ATCAACGATC - CAAGACATTTTAC CATACACTTTAC CA-AGACATTTTAC CATACAC--TTTAC ** * ** ***** seq2 A A C G A seq1 C G A-CG

More information

第4回バイオインフォマティクスアルゴリズム実習

第4回バイオインフォマティクスアルゴリズム実習 第 5 回バイオインフォマティクスアルゴリズム アラインメントアルゴリズム (3) 慶應義塾大学先端生命科学研究所 アラインメント 置換 挿入 欠損を考慮して塩基配列あるいは アミノ酸配列の似た部分をそろえることギャップ - を挿入する CAAGACATTTTAC CATACACTTTAC CA-AGACATTTTAC CATACAC--TTTAC ** * ** ***** アラインメントはグラフで表現できる

More information

A Constructive Approach to Gene Expression Dynamics

A Constructive Approach to Gene Expression Dynamics 配列アラインメント (I): 大域アラインメント http://www.lab.tohou.ac.jp/sci/is/nacher/eaching/bioinformatics/ week.pdf 08/4/0 08/4/0 基本的な考え方 バイオインフォマティクスにはさまざまなアルゴリズムがありますが その多くにおいて基本的な考え方は 配列が類似していれば 機能も類似している というものである 例えば

More information

Taro-再帰関数Ⅲ(公開版).jtd

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])

More information

Taro-再帰関数Ⅱ(公開版).jtd

Taro-再帰関数Ⅱ(公開版).jtd 0. 目次 6. 2 項係数 7. 二分探索 8. 最大値探索 9. 集合 {1,2,,n} 上の部分集合生成 - 1 - 6. 2 項係数 再帰的定義 2 項係数 c(n,r) は つぎのように 定義される c(n,r) = c(n-1,r) + c(n-1,r-1) (n 2,1 r n-1) = 1 (n 0, r=0 ) = 1 (n 1, r=n ) c(n,r) 0 1 2 3 4 5

More information

memo

memo 数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int

More information

memo

memo 計数工学プログラミング演習 ( 第 4 回 ) 2016/05/10 DEPARTMENT OF MATHEMATICA INFORMATICS 1 内容 リスト 疎行列 2 連結リスト (inked ists) オブジェクトをある線形順序に並べて格納するデータ構造 単方向連結リスト (signly linked list) の要素 x キーフィールド key ポインタフィールド next x->next:

More information

論理と計算(2)

論理と計算(2) 情報科学概論 Ⅰ アルゴリズムと計算量 亀山幸義 http://logic.cs.tsukuba.ac.jp/~kam 亀山担当分の話題 アルゴリズムと計算量 Fibonacci 数列の計算を例にとり アルゴリズムと計算量とは何か 具体的に学ぶ 良いアルゴリズムの設計例として 整列 ( ソーティング ) のアルゴリズムを学ぶ 2 Fibonacci 数 () Fibonacci 数 (2) = if

More information

PowerPoint Presentation

PowerPoint Presentation パターン認識入門 今回の話題 : パターン認識 長大な列 ( 例えば文章 ) から興味深い部分 ( 例えばある文字列を含む部分 ) を取り出したい ある文字列を含む web ページを抽出 プログラム中の特定の関数の呼び出しを DNA から面白そうな塩基配列を 例えば特定の塩基をたくさん含む場所を スパムメールの識別 B-CAS だけでなく B-C@S なども検出したい 2 簡単なパターン認識 : 文字列検索

More information

Taro-リストⅠ(公開版).jtd

Taro-リストⅠ(公開版).jtd 0. 目次 1. 再帰的なデータ構造によるリストの表現 1. 1 リストの作成と表示 1. 1. 1 リストの先頭に追加する方法 1. 1. 2 リストの末尾に追加する方法 1. 1. 3 昇順を保存してリストに追加する方法 1. 2 問題 問題 1 問題 2-1 - 1. 再帰的なデータ構造によるリストの表現 リストは データの一部に次のデータの記憶場所を示す情報 ( ポインタという ) を持つ構造をいう

More information

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (

More information

Microsoft PowerPoint - 10.ppt [互換モード]

Microsoft PowerPoint - 10.ppt [互換モード] 第 10 回関数と再帰 1 今回の目標 再帰的な考え方に慣れる C 言語における再帰関数を理解する 階乗を求める再帰的な関数を作成し その関数を利用するプログラムを作成する 2 階乗 n! の 2 つの数学的表現 (1) 繰り返しによる表現 n! = 1 2 i n n = ii i= 1 ( n 1 のとき ) ( なお 0!=1) (2) 漸化式による表現 n! = 1 n = 0のとき n (

More information

生命情報学

生命情報学 生命情報学 5 隠れマルコフモデル 阿久津達也 京都大学化学研究所 バイオインフォマティクスセンター 内容 配列モチーフ 最尤推定 ベイズ推定 M 推定 隠れマルコフモデル HMM Verアルゴリズム EMアルゴリズム Baum-Welchアルゴリズム 前向きアルゴリズム 後向きアルゴリズム プロファイル HMM 配列モチーフ モチーフ発見 配列モチーフ : 同じ機能を持つ遺伝子配列などに見られる共通の文字列パターン

More information

Taro-最大値探索法の開発(公開版

Taro-最大値探索法の開発(公開版 最大値探索法の開発 0. 目次 1. 開発過程 1 目標 1 : 4 個のデータの最大値を求める 目標 2 : 4 個のデータの最大値を求める 改良 : 多数のデータに対応するため 配列を使う 目標 3 : n 個のデータの最大値を求める 改良 : コードを簡潔に記述するため for 文を使う 目標 4 : n 個のデータの最大値を求める 改良 : プログラムをわかりやすくするため 関数を使う 目標

More information

program7app.ppt

program7app.ppt プログラム理論と言語第 7 回 ポインタと配列, 高階関数, まとめ 有村博紀 吉岡真治 公開スライド PDF( 情報知識ネットワーク研 HP/ 授業 ) http://www-ikn.ist.hokudai.ac.jp/~arim/pub/proriron/ 本スライドは,2015 北海道大学吉岡真治 プログラム理論と言語, に基づいて, 現著者の承諾のもとに, 改訂者 ( 有村 ) が加筆修正しています.

More information

アラインメントはグラフで表現できる

アラインメントはグラフで表現できる 2009 年度春学期バイオインフォマティクスアルゴリズム隠れマルコフモデル (1) 慶應義塾大学 環境情報学部 この世の現象の多くは偶然性に支配されている? 決定的でない現象の例 : コインを投げたときの裏表 サイコロの目 天気 ( 降水確率 ) 野球の打者の安打? ( 打率 ) 偶然性にはどのような法則があるのか? 確率モデルとは? 確率を取り入れた模型 抽象化 部分的にはでたらめに見える 全体的には秩序があり

More information

Taro-スタック(公開版).jtd

Taro-スタック(公開版).jtd 0. 目次 1. 1. 1 配列によるの実現 1. 2 再帰的なデータ構造によるの実現 1. 3 地図情報処理 1. 4 問題 問題 1 グラフ探索問題 - 1 - 1. は データの出し入れが一カ所で行われ 操作は追加と削除ができるデータ構造をいう 出入口 追加 削除 操作 最初 111 追加 111 222 追加 111 222 333 追加 111 222 333 444 追加 111 222

More information

Microsoft PowerPoint - algo ppt [互換モード]

Microsoft PowerPoint - algo ppt [互換モード] ( 復習 ) アルゴリズムとは アルゴリズム概論 - 探索 () - アルゴリズム 問題を解くための曖昧さのない手順 与えられた問題を解くための機械的操作からなる有限の手続き 機械的操作 : 単純な演算, 代入, 比較など 安本慶一 yasumoto[at]is.naist.jp プログラムとの違い プログラムはアルゴリズムをプログラミング言語で表現したもの アルゴリズムは自然言語でも, プログラミング言語でも表現できる

More information

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1 4. ソート ( 教科書 p.205-p.273) 整列すなわちソートは アプリケーションを作成する際には良く使われる基本的な操作であり 今までに数多くのソートのアルゴリズムが考えられてきた 今回はこれらソートのアルゴリズムについて学習していく ソートとはソートとは与えられたデータの集合をキーとなる項目の値の大小関係に基づき 一定の順序で並べ替える操作である ソートには図 1 に示すように キーの値の小さいデータを先頭に並べる

More information

講習No.10

講習No.10 2 次元配列 復習 float d[3][4]; 2 次元配列 d[i][j] 2 つのインデックス i と j でデータが指定される 縦が 3 行横が 4 列の float 型の表 4 列 横のインデックスは 3 まで j = 0 j = 1 j = 2 j = 3 3 行 i = 0 i = 1 i = 2 d[0][0] d[0][1] d[0][2] d[0][3] d[1][0] d[1][1]

More information

Microsoft PowerPoint - ca ppt [互換モード]

Microsoft PowerPoint - ca ppt [互換モード] 大阪電気通信大学情報通信工学部光システム工学科 2 年次配当科目 コンピュータアルゴリズム 良いアルゴリズムとは 第 2 講 : 平成 20 年 10 月 10 日 ( 金 ) 4 限 E252 教室 中村嘉隆 ( なかむらよしたか ) 奈良先端科学技術大学院大学助教 y-nakamr@is.naist.jp http://narayama.naist.jp/~y-nakamr/ 第 1 講の復習

More information

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt 計算機言語第 7 回 長宗高樹 目的 関数について理解する. 入力 X 関数 f 出力 Y Y=f(X) 関数の例 関数の型 #include int tasu(int a, int b); main(void) int x1, x2, y; x1 = 2; x2 = 3; y = tasu(x1,x2); 実引数 printf( %d + %d = %d, x1, x2, y);

More information

論理と計算(2)

論理と計算(2) 情報科学概論 Ⅰ アルゴリズムと計算 亀山幸義 http://logic.cs.tsukuba.ac.jp/~kam 計算とは? コンピュータが計算できることは? 1 2 関数 = 計算? NO 部分関数と計算 入力 1 入力 2 関数 出力 入力 1 入力 2 部分関数 出力 停止しない 入力 1 入力 2 コンピュータ 止まらないことがある出力 3 入力 1 入力 2 コンピュータ 出力 停止しない

More information

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; Point; 問題 18. 問題 17 の Point を用いて 2 点の座標を入力するとその 2 点間の距 離を表示するプログラムを作成せよ 平方根は

More information

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

プログラミング基礎

プログラミング基礎 C プログラミング Ⅱ 演習 2-1(a) BMI による判定 文字列, 身長 height(double 型 ), 体重 weight (double 型 ) をメンバとする構造体 Data を定義し, それぞれのメンバの値をキーボードから入力した後, BMI を計算するプログラムを作成しなさい BMI の計算は関数化すること ( ) [ ] [ ] [ ] BMI = 体重 kg 身長 m 身長

More information

第9回 配列(array)型の変数

第9回 配列(array)型の変数 第 12 回 配列型の変数 情報処理演習 ( テキスト : 第 4 章, 第 8 章 ) 今日の内容 1. 配列の必要性 2. 配列の宣言 3. 配列変数のイメージ 4. 配列変数を使用した例 5. 範囲を超えた添字を使うと? 6. 多次元配列変数 7. 多次元配列変数を使用した例 8. データのソーティング 9. 今日の練習問題 多数のデータ処理 1. 配列の必要性 ( テキスト 31 ページ )

More information

アルゴリズム入門

アルゴリズム入門 アルゴリズム入門 第 11 回 ~ パターン認識 (1)~ 情報理工学系研究科 創造情報学専攻 中山英樹 1 今日の内容 パターン認識問題の 1 つ : アラインメント アルゴリズム 再帰 動的計画法 2 パターン認識 音や画像の中に隠れたパターンを認識する 音素 音節 単語 文 基本図形 文字 指紋 物体 人物 顔 パターン は唯一のデータではなく 似通ったデータの集まりを表している 多様性 ノイズ

More information

講習No.9

講習No.9 日本語は通常 2 バイトの文字コード.JIS コード, シフト JIS コード, Unicode (UTF-8) 等の様々な文字コードがある. アスキーコード表 (ASCII code) アスキーコード ( 値 ) 漢字変換無しでキーボードから直接入力できる半角文字 32 48 0 64 @ 80 P 96 ` 112 p 33! 49 1 65 A 81 Q 97 a 113 q 34 " 50

More information

データ構造

データ構造 アルゴリズム及び実習 7 馬青 1 表探索 定義表探索とは 表の形で格納されているデータの中から条件に合ったデータを取り出してくる操作である 但し 表は配列 ( 連結 ) リストなどで実現できるので 以降 表 の代わりに直接 配列 や リスト などの表現を用いる場合が多い 表探索をただ 探索 と呼ぶ場合が多い 用語レコード : 表の中にある個々のデータをレコード (record) と呼ぶ フィールド

More information

Microsoft Word - 13

Microsoft Word - 13 担当 : 富井尚志 (tommy@ynu.ac.jp) アルゴリズムとデータ構造 講義日程 1. 基本的データ型 2. 基本的制御構造 3. 変数のスコープルール. 関数 4. 配列を扱うアルゴリズムの基礎 (1). 最大値, 最小値 5. 配列を扱うアルゴリズムの基礎 (2). 重複除去, 集合演算, ポインタ 6. ファイルの扱い 7. 整列 (1). 単純挿入整列 単純選択整列 単純交換整列

More information

Microsoft Word - no12.doc

Microsoft Word - no12.doc 7.5 ポインタと構造体 構造体もメモリのどこかに値が格納されているのですから 構造体へのポインタ も存在します また ポインタも変数ですから 構造体のメンバに含めることができます まずは 構造体へのポインタをあつかってみます ex53.c /* 成績表 */ #define IDLENGTH 7 /* 学籍番号の長さ */ #define MAX 100 /* 最大人数 */ /* 成績管理用の構造体の定義

More information

PowerPoint Presentation

PowerPoint Presentation パターン認識入門 パターン認識 音や画像に中に隠れたパターンを認識する 音素 音節 単語 文 基本図形 文字 指紋 物体 人物 顔 パターン は唯一のデータではなく 似通ったデータの集まりを表している 多様性 ノイズ 等しい から 似ている へ ~ だ から ~ らしい へ 等しい から 似ている へ 完全に等しいかどうかではなく 似ているか どうかを判定する パターンを代表する模範的データとどのくらい似ているか

More information

Microsoft PowerPoint - 4.pptx

Microsoft PowerPoint - 4.pptx while 文 (1) 繰り返しの必要性 while の形式と動作 繰り返しにより平 根を求める ( 演習 ) 繰り返しにより 程式の解を求める ( 課題 ) Hello. をたくさん表示しよう Hello. を画面に 3 回表示するには, 以下で OK. #include int main() { printf("hello. n"); printf("hello. n");

More information

Microsoft PowerPoint - kougi9.ppt

Microsoft PowerPoint - kougi9.ppt C プログラミング演習 第 9 回ポインタとリンクドリストデータ構造 1 今まで説明してきた変数 #include "stdafx.h" #include int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE*

More information

生命情報学

生命情報学 生命情報学 (2) 配列解析基礎 阿久津達也 京都大学化学研究所 バイオインフォマティクスセンター 配列アラインメントとは? 配列検索 バイオインフォマティクスにおける基本原理 配列が似ていれば機能も似ている ただし 例外はある 配列検索の利用法 実験を行い機能未知の配列が見つかったデータベース中で類似の配列を検索機能既知の類似の配列が見つかれば その配列と似た機能を持つと推定 機能未知の配列 VLPIKSKLP...

More information

第2回

第2回 第 4 回基本データ構造 1 明星大学情報学科 2 3 年前期 アルゴリズムとデータ構造 Ⅰ 第 4 回 Page 1 配列 スタック キューとその操作 4-1. 配列とその操作 配列型 同じ型の変数を並べたもの 配列にする型は 基本型 配列型 構造体 ポインタいずれでもよい 要素の並べ方を 次元 という 1 次元配列 ( 直線状 ) 2 次元配列 ( 平面状 ) 3 次元配列 ( 立体状 ) a[5]

More information

Microsoft PowerPoint - lecture a.pptx

Microsoft PowerPoint - lecture a.pptx 本日 (3 時限目 ) の内容 バイオインフォマティクス ( 生命情報学 ) 応用生命科学 情報生命学第 3 回配列解析入門 生物学と情報学の学際領域の学問分野 目的 生物データに対する情報解析技術の開発 情報解析技術を利用した新たな生物学的知識の発見 生物学の実験技術の革新 ( 例 : 次世代シークエンサー ) 大量のデータ ウェット ( 実験 ) とドライ ( 解析 ) の協力が不可欠 2 3

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 前回の出席確認演習 #include int main() { FILE *fp; int c, linecount, length, maxlength; fp=fopen("/usr/share/dict/words","r"); if (fp == NULL) return 1; linecount=0; length=0;

More information

memo

memo 計数工学プログラミング演習 ( 第 6 回 ) 2016/05/24 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : 再帰呼び出し 2 分探索木 深さ優先探索 課題 : 2 分探索木を用いたソート 2 再帰呼び出し 関数が, 自分自身を呼び出すこと (recursive call, recursion) 再帰を使ってアルゴリズムを設計すると, 簡単になることが多い

More information

Microsoft PowerPoint - 11.pptx

Microsoft PowerPoint - 11.pptx ポインタと配列 ポインタと配列 配列を関数に渡す 法 課題 : 配列によるスタックの実現 ポインタと配列 (1/2) a が配列であるとき, 変数の場合と同様に, &a[0] [] の値は配列要素 a[0] のアドレス. C 言語では, 配列は主記憶上の連続領域に割り当てられるようになっていて, 配列名 a はその配列に割り当てられた領域の先頭番地となる. したがって,&a[0] と a は同じ値.

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 5 回演習 前回までのお話 ポインタ ポインタを用いた文字列処理 構造体 ファイル 再帰的構造体 リスト構造 動的メモリ管理 今日のお題 ポインタやファイルなど これまでの内容の練習 教材 以前 以下に単語を収録したファイルがあることを紹介した : /usr/share/dict/words この中からランダムに単語を取り出したファイルを用意した http://sun.ac.jp/prof/yamagu/2019app/

More information

Taro-2分探索木Ⅰ(公開版).jtd

Taro-2分探索木Ⅰ(公開版).jtd 2 分探索木 Ⅰ 0. 目次 1. 2 分探索木とは 2. 2 分探索木の作成 3. 2 分探索木の走査 3. 1 前走査 3. 2 中走査 3. 3 問題 問題 1 問題 2 後走査 4. 2 分探索木の表示 - 1 - 1. 2 分探索木とは 木はいくつかの節点と節点同士を結ぶ辺から構成される 2 つの節点 u,v が直接辺で結ばれているとき 一方を親節点 他方を子節点という ある節点の親節点は高々

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 2 回文字列とポインタ 先週のパズルの解説 答え : 全部 p a 1 図の書き方 : p+1 は式であって その値を格納する記憶場所を考えないので 四角で囲まない 2 p+1 同じものを表すいろいろな書き方をしてみましたが パズル以上の意味はありません プログラム中に書くときは p+1 が短くていいんじゃないかな p+1 は 2 の記憶場所 p[1] は 2 に格納されている値

More information

kiso2-09.key

kiso2-09.key 座席指定はありません 計算機基礎実習II 2018 のウェブページか 第9回 ら 以下の課題に自力で取り組んで下さい 計算機基礎実習II 第7回の復習課題(rev07) 第9回の基本課題(base09) 第8回試験の結果 中間試験に関するコメント コンパイルできない不完全なプログラムなど プログラミングに慣れていない あるいは複雑な問題は 要件 をバラして段階的にプログラムを作成する exam08-2.c

More information

Prog1_10th

Prog1_10th 2012 年 6 月 20 日 ( 木 ) 実施ポインタ変数と文字列前回は, ポインタ演算が用いられる典型的な例として, ポインタ変数が 1 次元配列を指す場合を挙げたが, 特に,char 型の配列に格納された文字列に対し, ポインタ変数に配列の 0 番の要素の先頭アドレスを代入して文字列を指すことで, 配列そのものを操作するよりも便利な利用法が存在する なお, 文字列リテラルは, その文字列が格納されている領域の先頭アドレスを表すので,

More information

Microsoft Word - no206.docx

Microsoft Word - no206.docx 3.2 双方向リスト 今までのリストは 前から順にたどることしかできませんでした 今度は逆にもたどることができる 双方向リストを扱います この場合は 構造体には次を表すポインタの他に前を表すポインタを持つ ことになります 今回は最初と最後をポインタを使うと取り扱いが面倒になるので 最初 (start) と最後 (end) を どちらとも構造体 ( 値は意味を持たない ) を使うことにします こうすることによって

More information

kiso2-03.key

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

More information

< F2D837C E95CF CF68A4A94C5816A2E6A>

< F2D837C E95CF CF68A4A94C5816A2E6A> 0. 目次 6. ポインタ変数と文字処理 6. 1 文字 6. 2 文字列定数 6. 3 文字列 6. 4 文字列配列 7. ポインタ変数と関数 8. 問題 7. 1 引数とポインタ変数 7. 1. 1 変数が引数の場合 7. 1. 2 ポインタ変数が引数の場合 7. 2 引数と配列 7. 3 戻り値とポインタ変数 問題 1 問題 2-1 - 6. ポインタ変数と文字処理 6. 1 文字 文字の宣言

More information

文法と言語 ー文脈自由文法とLR構文解析2ー

文法と言語 ー文脈自由文法とLR構文解析2ー 文法と言語ー文脈自由文法とLR 構文解析 2 ー 和田俊和資料保存場所 http://vrl.sys.wakayama-u.ac.jp/~twada/syspro/ 前回までの復習 最右導出と上昇型構文解析 最右導出を前提とした場合, 上昇型の構文解析がしばしば用いられる. 上昇型構文解析では生成規則の右辺にマッチする部分を見つけ, それを左辺の非終端記号に置き換える 還元 (reduction)

More information

Microsoft PowerPoint - 05.pptx

Microsoft PowerPoint - 05.pptx アルゴリズムとデータ構造第 5 回 : データ構造 (1) 探索問題に対応するデータ構造 担当 : 上原隆平 (uehara) 2015/04/17 アルゴリズムとデータ構造 アルゴリズム : 問題を解く手順を記述 データ構造 : データや計算の途中結果を蓄える形式 計算の効率に大きく影響を与える 例 : 配列 連結リスト スタック キュー 優先順位付きキュー 木構造 今回と次回で探索問題を例に説明

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 2 回文字列とポインタ 先週のパズルの解説 答え : 全部 p a 1 図の書き方 : p+1 は式であって その値を格納する記憶場所を考えないので 四角で囲まない 2 p+1 同じものを表すいろいろな書き方をしてみましたが パズル以上の意味はありません プログラム中に書くときは p+1 が短くていいんじゃないかな p+1 は 2 の記憶場所 p[1] は 2 に格納されている値

More information

Taro-プログラミングの基礎Ⅱ(公

Taro-プログラミングの基礎Ⅱ(公 0. 目次 2. プログラムの作成 2. 1 コラッツ問題 自然数 n から出発して n が偶数ならば 2 で割り n が奇数ならば 3 倍して 1 を足す操作を行う この操作を繰り返すと最後に 1 になると予想されている 問題 1 自然数 aの操作回数を求めよ 問題 2 自然数 aから bまでのなかで 最大操作回数となる自然数を求めよ 2. 2 耐久数 正整数の各桁の数字を掛け 得られた結果についても同様の操作を繰り返す

More information

gengo1-11

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

More information

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - prog04.ppt プログラミング言語 2 第 04 回 (2007 年 05 月 14 日 ) 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 05 月 14 日分と書いてある部分が 本日の教材です 本日の内容

More information

プログラミング基礎

プログラミング基礎 C プログラミング 演習 プログラミング基礎 II 演習 II 2012 年 12 月 10 日 第 11 回 今後の予定 2012/12/10 C プログラミング及びプログラミング演習 II 2 2012/12/17 期末試験 (60 分間 ) 場所 :A0542 時間 :4 時限 (15:00~16:00) 2012/12/16 課題の最終提出締切 課題の提出方法 電子メールで提出 提出先 (

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 2 回文字列とポインタ 再掲 プログラミング上達のために 何度か言っていますが 単純な方法があります : 毎日プログラムを書いていれば そのうち慣れます 中身はなんでも構いません 逆にしばらくプログラムを書かずにいると忘れます レポート以降プログラムを書いていないという人は そろそろ忘れている頃かも知れませんね 今後もプログラミングの授業があり 基礎演習の内容が前提となりますので

More information

C 言語講座 Vol 年 5 月 29 日 CISC

C 言語講座 Vol 年 5 月 29 日 CISC C 言語講座 Vol.3 2009 年 5 月 29 日 CISC 字下げ 見やすく書こう! #include int main(void) int a; printf(" 値 =>"); scanf("%d",&a); if(a>10) printf("10 より大きい値です \n"); else printf("10 以下の値です \n"); return 0; #include

More information

Microsoft PowerPoint - kougi10.ppt

Microsoft PowerPoint - kougi10.ppt C プログラミング演習 第 10 回二分探索木 1 例題 1. リストの併合 2 つのリストを併合するプログラムを動かしてみる head1 tail1 head2 tail2 NULL NULL head1 tail1 tail1 があると, リストの併合に便利 NULL 2 #include "stdafx.h" #include struct data_list { int data;

More information

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること C プログラミング演習 1( 再 ) 4 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順

More information

PowerPoint Presentation

PowerPoint Presentation 工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 7 回 2010 年 11 月 18 日 1 今回のテーマ 1: ポインタ 変数に値を代入 = 記憶プログラムの記憶領域として使用されるものがメモリ ( パソコンの仕様書における 512 MB RAM などの記述はこのメモリの量 ) RAM は多数のコンデンサの集合体 : 電荷がたまっている (1)/ いない

More information

C プログラミング 1( 再 ) 第 4 回 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 1

C プログラミング 1( 再 ) 第 4 回 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 1 C プログラミング 1( 再 ) 第 4 回 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 1 前回の復習 関数を作る : 何を引数として どういう計算をし 何を返すか 関数についての注意 : * main 関数で使われている変数と同じ名前の変数があっても それらには何ら関係はない * 関数名と同じ変数は その関数内では使わないようにする ( 紛らわしさを少なくするため

More information

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - lec10.ppt 今日の内容, とポインタの組み合わせ, 例題 1. 住所録例題 2. と関数とは. を扱う関数. 例題 3. のリスト とポインタの組み合わせ 今日の到達目標 自分で を定義する 自分で定義したについて, 配列やポインタを作成する データ型 基本データ型 char 文字 (1 文字 ) int 整数 double 浮動小数など その他のデータ型配列 データの並び ( 文字列も, 文字の並び ) ポインタ

More information

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile data.txt #define OutFile sorted.txt #def C プログラミング演習 1( 再 ) 6 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include #define InFile "data.txt" #define OutFile "sorted.txt"

More information

C のコード例 (Z80 と同機能 ) int main(void) { int i,sum=0; for (i=1; i<=10; i++) sum=sum + i; printf ("sum=%d n",sum); 2

C のコード例 (Z80 と同機能 ) int main(void) { int i,sum=0; for (i=1; i<=10; i++) sum=sum + i; printf (sum=%d n,sum); 2 アセンブラ (Z80) の例 ORG 100H LD B,10 SUB A LOOP: ADD A,B DEC B JR NZ,LOOP LD (SUM),A HALT ORG 200H SUM: DEFS 1 END 1 C のコード例 (Z80 と同機能 ) int main(void) { int i,sum=0; for (i=1; i

More information

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile data.txt #define OutFile surted.txt #def C プログラミング演習 1( 再 ) 6 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include #define InFile "data.txt" #define OutFile "surted.txt"

More information

Microsoft PowerPoint - lecture a.pptx

Microsoft PowerPoint - lecture a.pptx 応用生命科学 情報生命学第 3 回配列解析入門 7 月 14 日 ( 木 ) 3 時限目加藤有己大阪大学大学院医学系研究科講義資料 http://www.med.osakau.ac.p/pub/rna/ykato/lecture/bonfo16/ 授業目的 情報科学と生命科学の融合領域である情報生命科学の基本的な手法を理解することを目的とする 日程 3 時限目 4 時限目 6 月 30 日 ( 木

More information

Microsoft PowerPoint - lec4.ppt

Microsoft PowerPoint - lec4.ppt 本日の内容 繰り返し計算 while 文, for 文 例題 1. 最大公約数の計算例題 2. 自然数の和 while 文例題 3. フィボナッチ数列例題 4. 自然数の和 for 文例題 5. 九九の表繰り返しの入れ子 今日の到達目標 繰り返し (while 文, for 文 ) を使って, 繰り返し計算を行えるようになること ループカウンタとして, 整数の変数を使うこと 今回も, 見やすいプログラムを書くために,

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 プログラミングを 余談 : 教えることの難しさ 丁寧に説明しないと分かってもらえない 説明すると 小難しくなる学生が目指すべきところプログラム例を説明されて理解できる違うやり方でも良いので自力で解決できる おっけー 動けば良い という意識でプログラミング 正しく動くことのチェックは必要 解答例と自分のやり方との比較が勉強になる 今日のお題 再帰的構造体

More information

Microsoft Word - no15.docx

Microsoft Word - no15.docx 7. ファイルいままでは プログラムを実行したとき その結果を画面で確認していました 簡単なものならそれでもいいのですか 複雑な結果は画面で見るだけでなく ファイルに保存できればよいでしょう ここでは このファイルについて説明します 使う関数のプロトタイプは次のとおりです FILE *fopen(const char *filename, const char *mode); ファイルを読み書きできるようにする

More information

PowerPoint Presentation

PowerPoint Presentation 算法数理工学 第 2 回 定兼邦彦 クイックソート n 個の数に対して最悪実行時間 (n 2 ) のソーティングアルゴリズム 平均実行時間は (n log n) 記法に隠された定数も小さい in-place ( 一時的な配列が必要ない ) 2 クイックソートの記述 分割統治法に基づく 部分配列 A[p..r] のソーティング. 部分問題への分割 : 配列 A[p..r] を 2 つの部分配列 A[p..q]

More information

スライド 1

スライド 1 遺伝子発現データの 階層的 非階層的クラスタリング 慶應義塾大学環境情報学部 階層的クラスタリング (1) 12 10 8 6 Data1 Data2 Data3 Data4 4 2 0 相関行列 Data1 Data2 Data3 Data4 Data1 1.00 Data2 0.90 1.00 Data3-0.50-0.55 1.00 Data4-0.44-0.46 0.95 1.00 Data1

More information

情報処理Ⅰ

情報処理Ⅰ Java フローチャート -1- フローチャート ( 流れ図 ) プログラムの処理手順 ( アルゴリズム ) を図示したもの 記号の種類は下記のとおり 端子記号 ( 開始 終了 ) 処理記号計算, 代入等 条件の判定 条件 No ループ処理 LOOP start Yes データの入力 出力 print など 定義済み処理処理名 end サンプルグログラム ( 大文字 小文字変換 ) 大文字を入力して下さい

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 03 変数と式 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 3.1 変数と型 変数とは p.60 C 言語のプログラム中で, 入力あるいは計算された数や文字を保持するには, 変数を使用する. 名前がついていて値を入れられる箱, というイメージ. 変数定義 : 変数は変数定義 ( 宣言 ) してからでないと使うことはできない. 代入 : 変数には値を代入できる.

More information

‚æ4›ñ

‚æ4›ñ ( ) ( ) ( ) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 (OUS) 9 26 1 / 28 ( ) ( ) ( ) A B C D Z a b c d z 0 1 2 9 (OUS) 9

More information

PG13-6S

PG13-6S プログラム演習 I レポート 学籍番号 担当教員 : 小林郁夫 氏名 実習日平成 26 年 7 月 4 日 提出期限 7 月 11 日提出日 7 月 17 日 1 週遅れ 第 13 回 テーマ : 並べ替えのアルゴリズム 教員使用欄 15 S A B C 再提出 課題 1 バブルソートの実行画面 プログラムのソースコード // day13_akb1.cpp : コンソールアプリケーションのエントリポイントを定義します

More information

Microsoft PowerPoint - algo ppt [互換モード]

Microsoft PowerPoint - algo ppt [互換モード] 平衡木 アルゴリズム概論 - 探索 (2)- 安本慶一 yasumoto[at]is.naist.jp 二分探索木 高さがデータを挿入 削除する順番による 挿入 削除は平均 O(log n) だが, 最悪 O(n) 木の高さをできるだけ低く保ちたい 平衡木 (balanced tree) データを更新する際に形を変形して高さが log 2 n 程度に収まるようにした木 木の変形に要する時間を log

More information

Taro-2分探索木Ⅱ(公開版).jtd

Taro-2分探索木Ⅱ(公開版).jtd 2 分探索木 Ⅱ 0. 目次 5. 2 分探索木の操作 5. 1 要素の探索 5. 2 直前の要素の探索 5. 3 直後の要素の探索 5. 4 要素の削除 5. 5 問題 問題 1-1 - 5. 2 分探索木の操作 5. 1 要素の探索 要素 44 の探索 (1) 要素 と 44 を比較して 左部分木をたどる (2) 要素 33 と 44 を比較して 右部分木をたどる (3) 要素 44 を見つけた

More information

進捗状況の確認 1. gj も gjp も動いた 2. gj は動いた 3. gj も動かない 2

進捗状況の確認 1. gj も gjp も動いた 2. gj は動いた 3. gj も動かない 2 連立 1 次方程式の数値解法 小規模な連立 1 次方程式の解法 消去法 Gauss 消去法 Gauss-Jordan 法 ( 大規模な連立 1 次方程式の解法 ) ( 反復法 ) (Jacobi 法 ) 講義では扱わない 1 進捗状況の確認 1. gj も gjp も動いた 2. gj は動いた 3. gj も動かない 2 パターン認識入門 パターン認識 音や画像に中に隠れたパターンを認識する 音素

More information

第1回 プログラミング演習3 センサーアプリケーション

第1回 プログラミング演習3 センサーアプリケーション C プログラミング - ポインタなんて恐くない! - 藤田悟 fujita_s@hosei.ac.jp 目標 C 言語プログラムとメモリ ポインタの関係を深く理解する C 言語プログラムは メモリを素のまま利用できます これが原因のエラーが多く発生します メモリマップをよく頭にいれて ポインタの動きを理解できれば C 言語もこわくありません 1. ポインタ入門編 ディレクトリの作成と移動 mkdir

More information

02

02 54 163116831 02 1 168 54 158 53 162 53 148 52 152 52 10,000 0 40,000 30,000 20,000 50,000 70,000 60,000 1,000 500 1,500 2,000 0 2,500 3,000 4,000 3,500 4,500 168 54 158 53 162 53 148 52 152 52 03 52148

More information

Prog1_15th

Prog1_15th 2012 年 7 月 26 日 ( 木 ) 実施構造体と typedef typedef 宣言によって,struct 構造体タグ名という表記を再定義し, データ型名のように扱うことができる 構文は typedef struct 構造体タグ名 再定義名 ; となり, この場合の構造体変数の宣言は, 再定義名を用いて行うことができる なお, ここでは 構造体タグ名は省略可能である 構造体を指すポインタ

More information

cp-7. 配列

cp-7. 配列 cp-7. 配列 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 月の日数配列とは. 配列の宣言. 配列の添え字. 例題 2. ベクトルの内積例題 3. 合計点と平均点例題 4. 棒グラフを描く配列と繰り返し計算の関係例題 5. 行列の和 2 次元配列 2 今日の到達目標

More information

Cプログラミング1(再) 第2回

Cプログラミング1(再) 第2回 C プログラミング 1( 再 ) 第 2 回 講義では Cプログラミングの基本を学び演習では やや実践的なプログラミングを通して学ぶ 1 前回のレポートから 前回の宿題 数あてゲーム の説明において 次のように書いていたものがいた : これはコンピュータがランダムに設定した数字を人間が当てるゲームである この説明でどこかおかしなところはないだろうか? 2 コンピュータの用語と日常的な用語の違い 物理において

More information

Microsoft PowerPoint - ad11-09.pptx

Microsoft PowerPoint - ad11-09.pptx 無向グラフと有向グラフ 無向グラフ G=(V, E) 頂点集合 V 頂点の対を表す枝の集合 E e=(u,v) 頂点 u, v は枝 e の端点 f c 0 a 1 e b d 有向グラフ G=(V, E) 頂点集合 V 頂点の順序対を表す枝の集合 E e=(u,v) 頂点 uは枝 eの始点頂点 vは枝 eの終点 f c 0 a 1 e b d グラフのデータ構造 グラフ G=(V, E) を表現するデータ構造

More information

Microsoft Word - no11.docx

Microsoft Word - no11.docx 3. 関数 3.1 関数関数は数学の関数と同じようなイメージを持つと良いでしょう 例えば三角関数の様に一つの実数値 ( 角度 ) から値を求めますし 対数関数の様に二つの値から一つの値を出すものもあるでしょう これをイメージしてもらえば結構です つまり 何らかの値を渡し それをもとに何かの作業や計算を行い その結果を返すのが関数です C 言語の関数も基本は同じです 0 cos 1 cos(0) =

More information

バイオインフォマティクスⅠ

バイオインフォマティクスⅠ バイオインフォマティクス ( 第 3 回 ) 慶應義塾大学生命情報学科 榊原康文 アセンブリの演習問題 ( 解 ) CGTCCGT CATCG 5 3 4 ATCCAT TCCGTAT 5 3 3 4 GTATC CGTCCGT-------- --TCCGTAT------ -----GTATC----- -------ATCCAT-- ----------CATCG ===============

More information

モデリングとは

モデリングとは コンピュータグラフィックス基礎 第 5 回曲線 曲面の表現 ベジェ曲線 金森由博 学習の目標 滑らかな曲線を扱う方法を学習する パラメトリック曲線について理解する 広く一般的に使われているベジェ曲線を理解する 制御点を入力することで ベジェ曲線を描画するアプリケーションの開発を行えるようになる C++ 言語の便利な機能を使えるようになる 要素数が可変な配列としての std::vector の活用 計算機による曲線の表現

More information

7-1(DNA配列から遺伝子を探す).ppt

7-1(DNA配列から遺伝子を探す).ppt DNA 配列の中から遺伝子を探す Blast 解析.6 Query DNA 塩基配列アミノ酸配列 DNA 塩基配列をアミノ酸配列に変換アミノ酸配列 DNA 塩基配列をアミノ酸配列に変換 データベース DNA 塩基配列アミノ酸配列アミノ酸配列 DNA 塩基配列をアミノ酸配列に変換 DNA 塩基配列をアミノ酸配列に変換 1. 2. 3. TATGGCTTA---- T G L TATGGCTTA----

More information

Microsoft Word - 03

Microsoft Word - 03 平成 24 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 担当 : 富井尚志 (tommy@ynu.ac.jp) 選択計算 ( 条件判断 ) 第 2 回 基本的制御構造 の復習 if 文 : ある条件に応じて別々の計算を行う. 式が真 (0 以外 ) であれば文 1 が実行され, 偽であれば文 2 が実行される. なお,else 以下は省略可能である. if ( 式 )

More information

* ライブラリ関数 islower(),toupper() を使ったプログラム 1 /* 2 Program : trupper.c 3 Student-ID : K 4 Author : TOUME, Kouta 5 Comments : Used Library function i

* ライブラリ関数 islower(),toupper() を使ったプログラム 1 /* 2 Program : trupper.c 3 Student-ID : K 4 Author : TOUME, Kouta 5 Comments : Used Library function i 1. ライブラリ関数 islower(), toupper() を使い 下記の trlowup プログラムを書き換えて 新規に trupper プログラムを作成せよ * サンプルプログラム 1 /* 2 Program : trlowup.c 3 Comments : translate lower case characters into upper case ones. 4 */ 5 6 #include

More information

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){ ソフトゼミ A 第 6 回 関数 プログラムは関数の組み合わせでできています 今までのゼミAでも printf や scanf など様々な関数を使ってきましたが なんと関数は自分で作ることもできるのです!! 今日は自作関数を中心に扱っていきます ゲーム制作でも自作関数は避けては通れないので頑張りましょう そもそもまず 関数とは 基本的には 受け取った値に関数によって定められた操作をして その結果の値を返す

More information

Microsoft PowerPoint - bp02.ppt

Microsoft PowerPoint - bp02.ppt University of Electro-Communications Human Interface section 基礎プログラミングおよび演習 第 2 回 担当 : 長谷川晶一 @5 階 522/520 復習 C 言語の基本 #include int main(int argc, const char* argv[]){ // insert code here printf

More information

演習課題No12

演習課題No12 演習課題 No.12 ( 課題は 3 題ある ) 課題 12-1 時間内提出 従来の C 言語には複素数を直接扱うデータ型はないので (*), 構造体で複素数 ( 英語で complex) を表すことにする. 複素数を表す構造体を以下のように定義する. struct complex float r; // 実部 ( 英語で real) float i; // 虚部 ( 英語で imaginary)

More information

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用 RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用体型のローカル変数を文字列操作関数で操作する場合の注意事項 (RXC#013) 配列型構造体または共用体の配列型メンバから読み出した値を動的初期化に用いる場合の注意事項

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 9 回 メソッド (3) 授業の前に自己点検 以下の質問に答えられますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 戻り値はどのように利用しますか 変数のスコープとは何ですか

More information

ポインタ変数

ポインタ変数 プログラミング及び実習 5 馬青 1 文字処理 数値処理 : 整数 浮動小数点数 単一の文字は と ( シングルクォーテーション ) で囲んで表現される 文字のデータ型は char または int である int を用いたほうが ライブラリの関数の引数の型と一致する 以下は全部 int の使用に統一する 従って int ch; で文字変数を宣言しておくと ch= A ; のように ch に文字 A

More information

プログラミング及び演習 第1回 講義概容・実行制御

プログラミング及び演習 第1回 講義概容・実行制御 プログラミング及び演習 第 3 回プリプロセッサ 型変換 演習 (2014/04/25) 講義担当情報連携統轄本部情報戦略室大学院情報科学研究科メディア科学専攻教授森健策 大学院情報科学研究科メディア科学専攻助教小田昌宏 本日の講義 演習の内容 前回の復習 ( 変数, 関数, 再帰 ) 復習します プリプロセッサ 演習 講義 演習ホームページ http://www.newves.org/~mori/14programming

More information

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル 概略設計書 作成者築山修治作成日 2012 年 10 月 1 日 概要 ( どのような入力に対して, どのような出力をするかの概要説明 ) * 木 T および質問点対の集合 P が与えられたとき, 各質問点対 p = (v,w) P の最下位共通先祖 ( すなわち木 T において点 v と w の共通の先祖 a で,a の真の子孫には v と w の共通の先祖が無いような点 ) を見出す関数である.

More information

プログラム例 /* ACM-ICPC2009 国内予選 Problem C */ // // filename = pc1.c // コンパイル

プログラム例 /* ACM-ICPC2009 国内予選 Problem C */ //   // filename = pc1.c // コンパイル [Problem C] 覆面計算 与えられた覆面計算に対して 等式を満たすような数字の割り当てが何通りあるか を求める問題であるので 各文字に対する数字の割り当てを順番に生成していき その割り当てが等式を満たすかどうかチェックすればよい 異なる文字には異なる数値 (0~9) が割り当てられるので 最大で 10! 約 360 万通りの組み合わせをチェックする必要がある (1 桁の場合を除いて最上位の桁は

More information