• 検索結果がありません。

ヒントスライドPPT プログラミング演習2 #prog2bkc net

N/A
N/A
Protected

Academic year: 2018

シェア "ヒントスライドPPT プログラミング演習2 #prog2bkc net"

Copied!
13
0
0

読み込み中.... (全文を見る)

全文

(1)

第 6 週

配列を使ったスタック

(2)

スタックとは

データを保持するデータ構造

後入れ先だし (Last In First Out: LIFO)

箱に荷物を上に積みながら入れていき (push-down) , 上から取り出す (pop-up) イメージ

スタックポインタ

データの出し入れ口を指す

(3)

スタックの操作

初期状態

スタックポインタ A

1 回 push-down

スタックポインタ

C B A

3 回 push-down

スタックポインタ

B A

3 回 push-down 後, pop- up

スタックポインタ

C

3

(4)

配列によるスタックの表現

文字型データ (char 型 ) を積んでいくスタックを 考える

char s[MAX];   スタック用配列

int top; スタックポインタ

 初期化: top=0

push 操作 : s[top] = data, top++;

pop 操作 : top--, data = s[top-1];

(5)

s[2]

s[1]='B' s[3]

s[0]='A'

配列を使ったスタック操作 : 必須課題 6-

2,3

s[2] s[1] s[3]

s[0]

初期状態 top=0

1 回 push-down top=1

3 回 push-down top=3

3 回 push-down 後, pop- up

top=2 data = 'C'

s[2] s[1] s[3]

s[0]='A'

s[2]='C' s[1]='B' s[3]

s[0]='A' s[top] =

'A';

top ++;

char data; top --;

data = s[top];

MAX=4 場合

5

(6)

#define 文によるマクロ置換

コンパイル時に,プログラム中の特定の文字列を,別の文字列で

置換する

定数を定義できる

同一の定数が頻出するとき,プログラムの記述や修正を簡単化できる

定数の意味づけができる

#define MAX 30 /* 配列の大きさ */ int main(void){

char s[MAX]; /* スタック配列 */

int top; /* スタックポインタ */

char data; /* スタックから取り出した値 */

(7)

ヒント集 (1/3)

データ構造とアルゴリズム教科書 P.90-

データ構造とアルゴリズムレジュメ第 5 回

課題 6-1

配列のサイズは「 #define 」で十分な大きさ確保 オーバフローは扱わなくてよい

スタックの要素は初期値として代入しておく

出力はスタックの top-1 から 0 まで順に出力

#define MAX 100 int main(void){

char s[MAX] int top = 4;

}

7

(8)

ヒント集( 2/3 )

課題 6-2, 6-3

課題 6-1 のプログラムを拡張

関数の宣言はレジュメのものを使うこと スタックの配列や top の値は参照渡し

スタックの基本操作の仕方を思い出すこと –PUSH 時(課題 6-2 ):

–top に値を代入 –top を +1

–POP 時(課題 6-3 ): –top を -1

–top の値を出力

• PUSH , POP の呼び出しは main 中に直接書いてよい

int main(void){ char s[MAX]; int top = 4;

push(‘x’, s, &top); pop(s, &top);

}

(9)

ヒント集 (3/3)

オプション課題 6-4

オプション課題 7-4, 8-5, 8-6 と近い課題

オプション課題 6-5

オプション課題 7-5 と近い課題

9

(10)

以降,余力のある場合

(11)

スタックのオーバーフロー

確保したメモリ領域を超えて push しようとすること

int stack[5]; //5 つまで格納可能

overflo w

push

push 時には、オーバーフローが起きないように注意

11

(12)

スタックのアンダーフロー

underflo w pop

pop 時には、アンダーフローが起きないように注意

データが格納されていないスタックに対して pop しようとすること

TOP

TOP

(13)

著者リスト

13

1. 泉 朋子 (情報コミュニケーション学科) 2. 大森 隆行(情報システム学科)

3. 原田 史子(情報システム学科)

参照

関連したドキュメント

従って、こ こでは「嬉 しい」と「 楽しい」の 間にも差が あると考え られる。こ のような差 は語を区別 するために 決しておざ

部を観察したところ,3.5〜13.4% に咽頭癌を指摘 し得たという報告もある 5‒7)

攻撃者は安定して攻撃を成功させるためにメモリ空間 の固定領域に配置された ROPgadget コードを用いようとす る.2.4 節で示した ASLR が機能している場合は困難とな

このように、このWの姿を捉えることを通して、「子どもが生き、自ら願いを形成し実現しよう

子どもが、例えば、あるものを作りたい、という願いを形成し実現しようとする。子どもは、そ

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます

耐震性及び津波対策 作業性を確保するうえで必要な耐震機能を有するとともに,津波の遡上高さを

Q-Flash Plus では、システムの電源が切れているとき(S5シャットダウン状態)に BIOS を更新する ことができます。最新の BIOS を USB