56
Programming Algorithm 講師 石川敢也

Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

Embed Size (px)

Citation preview

Page 1: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

Programming

Algorithm

講師 石川敢也

Page 2: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

2

このクラスの目的

プログラミングの基本となるアルゴリズムを理解して、 フローチャートの書き方を身につけるクラスです。

一方的に講義を聞いているだけの科目ではありません。

講義の進め方

アルゴリズムを自分で考えながら、基礎となるパターン、考え方を確実に習得していきます。講義と意見交換を 交互に繰り返して、無理のないように進行していきます。

成績評価

シラバスを参照してください。

Guidance

Page 3: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

講師紹介

石川 敢也 (いしかわ かんや)

ラクパス 代表

法政大学大学院 イノベーション・マネジメント研究科 特任講師。

元ISO/IEC 27001 審査員補、読売・日本テレビ文化センター 講師。

著書「情報処理教科書 iパスクイズ222 ITパスポート試験攻略の書」(翔泳

社)、共著 「情報処理教科書 情報セキュリティマネジメント 要点整理&予想

問題集」(翔泳社)、「インターネットから子供を守る!」、「初級シスアド対策

問題集」(ローカス)、「Excel&Word完全解決!」(宝島)など。

3

Page 4: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

「プログラミング」を、 小学生にわかるように説明してください。

プログラミングとは?

4

Page 5: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

プログラミング

コンピュータプログラムを作成することにより、 人間の意図した処理を行うようにコンピュータに 指示を与える行為。

プログラミングの過程で、ソースコードを記述することをコーディングという。

プログラミングをする人をプログラマという。

コンピュータプログラムを記述するための形式言語を プログラミング言語という。多くの種類がある。

Programming

5

Wikipediaより抜粋・編集・修正して引用

Page 6: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

プログラミング言語(プログラム言語) プログラミング言語は、情報を組織し処理するタスクについての理解を容易にし、アルゴリズムを正確に表現することができる。

数行の短いスクリプトから、数百人のプログラマが書く

巨大なシステムまで、様々なプログラムがある。

プログラミング言語の特徴

人間の会話と比較して、正確性と完全性の要求性が

非常に高い。

Programming Language

6

Wikipediaより抜粋・編集・修正して引用

Page 7: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

スクリプト言語 ソースコードをその場で機械語に翻訳する。

コンパイラ言語に比べて、習得が容易と言われている。

コードをすぐに実行できる。

代表的な言語

JavaScript

PHP

Ruby

Python

Perl

Scripting Language

7

Page 8: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

コンパイラ言語 ソースコードを事前にコンパイルしてから動作する。

コンパイルとは、人間の言葉に近い高水準言語で

書かれたソースコードを、コンピュータが実行できる

オブジェクトコードに変換する作業。

コンパイラにより変換されたプログラムは、リンカに

よってリンクされることで、実行可能になる。

代表的な言語

Java

C

C++

C#

Compiler Language

8

Page 9: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

C

多くのプログラム言語に影響を与えている言語。

関数の集合体なので全体の構造を把握しやすい。

メモリーや周辺機器等を簡単な方法で直接制御できる。

C++やVRゲーム開発にも使われるC#なども。

Java言語

仮想マシンで動く。高い汎用性。オブジェクト指向。

学びやすくライブラリの数が膨大。

Visual Basic

Microsoft offeceに搭載されている。

Windowsのみで動作。

代表的なプログラミング言語(1)

9

Page 10: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

JavaScript

オブジェクト指向言語でわかりやすい文法。

Webブラウザで動作する可能。スマートフォンも。

Webエンジニアには欠かせないスクリプト言語。

Python

開発シェアが急上昇しているスクリプト言語。

AIやSNSなどの開発にも使われている。

Webアプリから人工知能の開発まで応用できる。

PHP

サーバーで動作するスクリプト言語。

HTMLの中に埋め込んでユーザ管理などで利用。

他のスクリプト言語に比べて容易。データーベースも。

代表的なプログラミング言語(2)

10

Page 11: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

R

ビッグデータの統計データ分析に使う。

利用が急拡大しているスクリプト言語。

Ruby on Rails(RoR)

オープンソースのWebアプリケーションフレームワーク。

他のフレームワークより少ないコードで比較的、

容易に開発できるよう考慮されている。

まつもとゆきひろ氏が開発したRubyで書かれている。

HTML /CSS

HTMLは、Webページの要素や構造を定義する言語。

CSSは、Webページのデザインを定義する言語。

代表的なプログラミング言語(3)

11

Page 12: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

CASL/CASL II

情報処理技術者試験におけるプログラミング能力試験のために、CAP-Xの後継として策定されたアセンブリ言語。

動作する(という設定)なのは、学習用に単純化された

仮想計算機で、「COMET」と呼ばれています。

2001年に基本情報技術者試験がスタートするときに、

仕様の改訂が行われて「CASL II」になりました。

アセンブリ言語(Assembler Language)

プログラム可能な機器を動作させるための機械語を、

人間にわかりやすい形で記述する、低水準言語。

「Assemble」は「結合する、組み立てる」という意味です。

学習用のプログラミング言語

12

Page 13: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

Progate https://prog-8.com/

無料で始められる、初心者向け学習サイト。

ドットインストール https://dotinstall.com/

3分動画で学ぶプログラミング学習サイト。

paizaラーニング https://paiza.jp/

Java、Python、PHPなどのプログラミング言語に対応。

CodeMonkey https://codemonkey.jp/

ゲームで学ぶプログラミング学習サイト。

オンラインプログラミング学習サービス

13

Page 14: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

準備 テキストエディタ(「メモ帳」など)を起動しよう。

後でブラウザ(IE、Chrome、Firefoxなど)も使います。

今からの実習に必要な用語 HTML

タグ

絶対パスと相対パス

とりあえず、少しだけやってみましょう

14

Page 15: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

タグ HTMLでマークアップのための使う命令。

< >で囲うことで、コンテンツの本文と区別する。

命令を開始する「開始タグ」と命令を終える「終了タグ」がある。

<〇〇〇〇> 開始タグ ~ </〇〇〇〇> 終了タグ

終了タグは省略可能または記述しないもの、逆に、

省略できない(省略してはいけない)ものがある。

例えば<title>はWebページのタイトルを指定するタグ。

タグの構造

15

Page 16: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

<title> ブラウザのタブや、ブックマークで表示されるタイトルを指定。

<title>HTMLを学習中</title>

Webページのタイトルを書きます

16

Page 17: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

<br>は改行を命令するタグです。

<title>HTMLを学習中</title>

こんにちは。<br>

私は〇〇〇〇〇です。<br>

よろしくお願いします。

コンテンツの文章を書きます

17

Page 18: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

HTMLの形式として保存するには、 拡張子を「.html」にして保存します。

.(ドット、ピリオド)を忘れないように。

ファイル名.html で、デスクトップに保存。

HTMLとして保存してみましょう

18

Page 19: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

Internet ExplorerやChromeなどのブラウザで保存したファイルを開いてみましょう。

ブラウザで表示してみましょう

19

Page 20: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

<h1>は、続く文章を見出しとして定義するタグで、 終了タグ</h1> と一緒に、 <h1> ~ </h1>の形で使います。

<title>HTMLを学習中</title>

<h1>こんにちは。</h1><br>

私は〇〇〇〇〇です。<br>

よろしくお願いします。

<h1>を<h2>に変えると、どうなりますか?

「こんにちは」を見出しに指定しよう

20

Page 21: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

<font color=“red”>~ </font>は、~の部分を 赤で表示する命令です。 “red”の部分を16進数“ #ff0000 ”でも指定できます。

<title>HTMLを学習中</title>

<h1>こんにちは。</h1><br>

私は<font color="red">〇〇〇〇〇</font>です。<br>

よろしくお願いします。

青はblue(#0000f)、緑はgreen(#008000)です。

いろいろな色を試してみましょう。

文字の色を変えてみましょう

21

Page 22: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

例えば、ラクパスのWebサイトへのリンクは、 <a href=“http://rakupass.com/”>と書きます。

このタグには終了タグはありません。

<title>HTMLを学習中</title>

<h1>こんにちは。</h1><br>

私は<font color="red">〇〇〇〇〇</font>です。<br>

よろしくお願いします。<br>

<a href=“http://rakupass.com/”>石川先生のサイトです。</a>

リンクをつけてみましょう

22

Page 23: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

<ul>

<li>月曜日</li>

<li>火曜日</li>

<li>水曜日</li>

<li>木曜日</li>

<li>金曜日</li>

<li>土曜日</li>

<li>次は何曜日ですか?</li>

</ul>

箇条書きもできます

23

Page 24: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

できましたか?

24

今日はこのくらいにしておきましょう。 続きは「HTML」のクラスで学びます。

Page 25: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

「アルゴリズム」を、 おじいちゃん、おばあちゃんに説明してください。

アルゴリズムとは?

25

Page 26: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

アルゴリズム 数学、コンピューティング、言語学などの分野において、問題を解くための手順を定式化した形で表現したもの。

「算法」や「解法」などと訳されることもある。

「問題」は、その「解」を持っているが、アルゴリズムは 正しくその解を得るための具体的手順および根拠を 与える。

多くの場合において効率性が重要となる。

コンピュータにアルゴリズムをソフトウェア的に 実装するものがコンピュータプログラムである。

人間より速く大量に計算ができるのがコンピュータの強みであるが、計算が正しく効率的であるためには、 正しく効率的なアルゴリズムに基づいたプログラムが必要。

Algorithm

26 Wikipediaより抜粋・編集・修正して引用

Page 27: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

次の質問です

27

バケツA には5リットルの水が入る。

バケツBは3リットルの水が入る。

このバケツで1リットルの水を計ってください。

A 容量5ℓ B 3ℓ

Page 28: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

命令 バケツA(容量5ℓ) バケツB(容量3ℓ)

1 Aに水を入れる 5 0

2 Aの水をBに移動 2 3

3 Bの水を捨てる 2 0

4 Aの水をBに移動 0 2

5 Aに水を入れる 5 2

6 Aの水をBに移動 4 3

7 Bの水を捨てる 4 0

8 Aの水をBに移動 1 3

解答(1)

28

Page 29: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

命令 バケツA(容量5ℓ) バケツB(容量3ℓ)

1 Bに水を入れる 0 3

2 Bの水をAに移動 3 0

3 Bに水を入れる 3 3

4 Bの水をAに移動 5 1

解答(2)

29

解答(1)と解答(2)、どちらが効率が良いでしょうか?

Page 30: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

3組の夫婦がいて川を渡ろうとしています。

しかし、2人乗りの小船が一隻しかありません。

夫はやきもち焼きなので、妻は夫がいない

ときは、他の男と一緒の船には乗りません。

さて、この3組の夫婦が川を渡るには、

どうすればいいでしょうか?

もう1問やってみましょう

30

Page 31: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

3組の夫婦を「夫A、妻a」、「夫B、妻b」、「夫C、妻c」と呼びます。

Aとaが渡ります

aを降ろして、Aが戻ります

bとcが渡ります

bを降ろしてcが戻ります

AとBが渡ります

Aとaが戻ります

AとCが渡ります

bが戻ります

aとcが渡ります

cが戻ります

bとcが渡れば完了です

解答

31

Page 32: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

丸を一つ描いてください。

丸の下に三角をひとつ描いてください。

三角の左右に、斜めにした

細長い長方形をひとつづつ、

三角の下にも二つ描いてください。

何に見えますか?

紙とペンを用意してください

32

Page 33: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

どのように伝えれば正しい絵が描けたのでしょうか?

解答例

33

Page 34: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

鍋に油を引いてコンロの火をつける。

タマネギを切って鍋で炒める。

肉を切って鍋で炒める。

じゃがいもを切って鍋で炒める。

鍋に水を入れて煮る。

カレーのルーを鍋に入れる。

さらに煮込む。

カレーライスの作り方を教えてください

34

Page 35: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

35

「カレーの作り方」をフローチャートにしてみましょう

Page 36: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

フローチャートの書き方(1)

36

端子(開始・終了)

処理

判断

矢印・順序

線・処理の流れ

準備

Page 37: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

フローチャートの書き方(2)

37

表示

ループ始端

ループ終端

データ

書類・帳票

入力

Page 38: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

フローチャートの原則

最初と最後は端子を書く

上から下へ流れる(逆行するときは矢印で繋ぐ)

左から右へ流れる(逆行するときは矢印で繋ぐ)

線や矢印は交差しない(重ならない)

記号の中には内容が分かる文字や数式を書く

流れの前後を定義するときは矢印を使う

フローチャートを書くときのルール

38

Page 39: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

カレーは無事にできましたか?

39

Page 40: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

順次構造 命令を順番に実行・処理していく。

Sequence

40

Page 41: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

選択構造 処理が条件によって判断されて分岐する。

Selection

41

Page 42: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

反復構造(1) 前判定 条件が成立していれば繰り返し実行する。

継続条件/終了条件

42

Page 43: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

反復構造(2) 後判定 条件が成立していれば繰り返し実行する。

後判定の繰り返し

43

Page 44: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

フローチャートに「タマネギが飴色になったら水を入れる」を追加しよう

44

Page 45: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

家から教室に来るまでの手順をフローチャートにしてください

45

Page 46: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

構造化チャート

流れ図の他にもアルゴリズムを表現する手法がある。

順次、選択、反復の構造のみで表現する図法のこと。

PAD(Problem Analysis Diagram)

日立製作所で考案された構造化チャート。

NSチャート(Nassi Shneiderman Chart)

線や矢印ではなく四角の枠を組み合わせて表現する。

Structured Chart

46

Page 47: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

ソート

不規則なデータを一定の規則に従って整列させる作業。

昇順(Ascending Order)

値の小さい方から大きい方へ順に並べる。

降順(Descending order)

値を大きい方から小さい方へ順に並べる。

Sort

47

Page 48: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

挿入ソート(基本挿入法)

先頭の要素をソート(整列)済みの要素と考えて、この配列に

次の要素を適切な位置に挿入する。

ソート済み要素の次に位置する要素を、整列済みである

配列の適切な位置に追加してソートを完成させていく。

ヒープソート(Heap Sort)

リストから要素を取り出し、順に整列済みリストに追加する。

ヒープは、子要素は親要素より常に大きいか等しい木構造。

Insertion Sort

48

Page 49: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

バブルソート(隣接交換法、基本交換法)

隣接する要素と値の大きさを比較して、

順序が逆の場合には、隣の要素と入れ替えを行う。

選択ソート(Selection Sort)

最大・最小値の要素を探索して入れ替えを行う。

この他にも、マージソート、クイックソート、

シェルソートなど、さまざまなアルゴリズムがある。

Bubble Sort

49

Page 50: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

二分探索(にぶんたんさく)

(1)順番にデータを並び替える(ソートする)

(1)目的の値と中央の値との大・小を比較

(2)目的値が大・小のどちらかを判断

(3)目的の値にたどり着くまで繰り返す

Binary Search

50

Page 51: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

「はい」か「いいえ」で答えられる質問を、4回だけすることができます。

20 歳以上 36 歳未満である田中さんの

年齢を当ててください。

二分探索クイズ

51

Page 52: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

「数独」をやってみよう!

9×9のセルに1から9までの数字を書くパズル

ルールは下記の三つだけ

一列に同じ数字を2回使ってはいけない

一行で同じ数字を2回使ってはいけない

1ブロックで同じ数字2回を使ってはいけない

Number Place

52

Page 53: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

数独にチャレンジ!

53

Page 54: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

構造化チャート

流れ図の他にアルゴリズムを表現する手法。

PAD(Problem Analysis Diagram)

日立製作所で考案された構造化チャート。

NSチャート(Nassi Shneiderman chart)

線や矢印ではなく四角の枠を組み合わせて表現する。

構造化チャート

54

Page 55: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

ソフトウェア開発技術者試験 〔2005年春期 午前問題 問40 改題〕

55

構造化チャートに関する記述として、最も適切なものはどれか。

ア ジャンプを表現する方法を持たず、モジュール内の論理構造を

表現するのに適した図式である。

イ システム分析・設計に用いられる図式であり、システムの

状態の変化を記述するのに適している。

ウ データの流れを表すのが容易な図式であるが、処理の手順を

表しにくい。

エ モジュール構造図を示す図式目次と、各モジュールの機能を

入力・処理・出力の形式で記述した図であり、構造化手法の特徴

であるトップダウン設計に向いている。

解答 ア

構造化チャートは、順次、選択、反復を表現する図です。

矢印を使わないので、流れをジャンプさせることはできません。

Page 56: Programming Algorithmrakupass.com/books/programming_algorithm.pdfAlgorithm 26 Wikipedia より抜粋・編集・修正して引用 次の質問です 27 バケツA には5リットルの水が入る。

お疲れさまでした!

56