プログラムの基本構造と 構造化チャート(PAD)

Slides:



Advertisements
Similar presentations
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
Advertisements

5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
4章 制御の流れ-3.
VBAを通して プログラム言語の基本構造を学ぶ
情報基礎実習I (第7回) 木曜4・5限 担当:北川 晃.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
6/26 前回復習 for文、while文による繰り返し計算
VBA H106077 寺沢友宏.
多重ループ 繰り返し構造:補足事項 第8回目 [6月8日、H.16(‘04)] 本日のメニュー 1)前回の課題について
多重ループ 繰り返し構造:補足事項 第8回目 [6月12日、H.15(‘03)] 本日のメニュー 1)前回の課題について
情報基礎A 第13週 VBAプログラミング VBAの基本文法7・実際のデータ処理
情報基礎実習I (第5回) 木曜4・5限 担当:北川 晃.
2009/10/9 良いアルゴリズムとは 第2講: 平成21年10月9日 (金) 4限 E252教室 コンピュータアルゴリズム.
C言語 配列 2016年 吉田研究室.
情報基礎A 第7週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
第6章 2重ループ&配列 2重ループと配列をやります.
4.2.2 4to1セレクタ.
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
4.2 連立非線形方程式 (1)繰返し法による方法
情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
情報基礎A 第11週 プログラミング入門 VBAの基本文法3 配列・For~Next
コンピュータと情報 第15回 Excelの使い方 その4.
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
配列(1) 第9回目 [6月15日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)配列 4)課題
コンピュータと情報 第14回 Excelの使い方 その4.
第7回 条件による繰り返し.
情報処理3 第5回目講義         担当 鶴貝 達政 11/8/2018.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
本時の目標 「簡単なプログラム言語の意味を理解し、マクロ機能を使って簡単なプログラムを作ることができる。」
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
プログラミング入門 電卓を作ろう・パートIV!!.
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
情報実習I (第7回) 木曜4・5限 担当:北川 晃.
アルゴリズムとプログラミング (Algorithms and Programming)
Structured programming
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
レジスタの割付け 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第12章5節.
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
プログラムの制御構造 配列・繰り返し.
VBで始めるプログラミング 第三回 コードを書こう!! まきはた@ナーク ’04/05/21.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
PADのテンプレート 処理、連接 x0 ← x x ← x0+ u(x0) err ← |x - x0| 判断(選択) x2 ← x3
PADのテンプレート 処理、連接 x0 ← x x ← x0+ u(x0) err ← |x - x0| 判断(選択) x2 ← x3
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
情報基礎Ⅱ (第5回) 月曜4限 担当:北川 晃.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
先週の復習 2重ループを用いた、 表の記入と読み込み.
基礎プログラミング演習 第6回.
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
プログラミングⅡ 第2回.
第6回:得点を表示しよう! (文字の表示、乱数)
ウェブデザイン演習 第6回.
C#プログラミング実習 第2回.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
プログラミング序論演習.
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
6.2 高速フーリエ変換 (1)FFT(fast Fourier transform)とは
PADのテンプレート 処理、連接 x0 ← x x ← x0+ u(x0) err ← |x - x0| 判断(選択) x2 ← x3
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
アルゴリズム ~すべてのプログラムの基礎~.
情報処理3 第4回目講義         担当 鶴貝 達政 12/17/2019.
Presentation transcript:

プログラムの基本構造と 構造化チャート(PAD)

復習 プログラムの3つの基本構造 処理1 条件 ループ 条件 処理 処理2 処理2 処理1 ループ 順次構造 選択構造 繰り返し構造 成立  条件  不成立 処理 処理2 処理2 処理1 ループ 順次構造 選択構造 繰り返し構造

選択構造 条件 処理2 処理1 条件 処理1 IF 条件 Then 処理1 Else 処理2 End If IF 条件 Then 処理1   処理1 Else   処理2 End If 条件 成立 不成立 処理2 処理1 条件 成立 IF 条件 Then   処理1 End If 不成立 処理1

選択構造 A>=60 不合格と表示 合格と表示 もし、Aが60以上ならTextBox1に“合格” 、そうでないなら、 “不合格” と表示する。 Start IF A>=60 Then   TextBox1.text=“合格” Else   TextBox1.text=“不合格” End If 成立 A>=60 不成立 不合格と表示 合格と表示 End

回数を指定しての繰り返し For Next 文を使う 条件を指定しての繰り返し Do Loop 文を使う 前判定の繰り返し 後判定の繰り返し 繰り返し構造   回数を指定しての繰り返し  For Next 文を使う   条件を指定しての繰り返し  Do Loop 文を使う   前判定の繰り返し   後判定の繰り返し ループ ループ  条件  処理 処理  条件  ループ ループ 前判定 後判定

回数を指定しての繰り返し処理 ループ For 変数 = 初期値 To 最終値   処理 Next 変数 変数 = 初期値~最終値 処理 ループ

回数を指定しての繰り返し ループ i=1~10 処理1 ループ 処理1を10回実行する Start For i = 1 To 10 処理1   処理1 Next i ループ i=1~10 処理1 ループ End

回数を指定しての繰り返し s ← 0 ループ i=1~10 s ← s + i ループ TextBox1.Text ← s Start s = 0 For i= 1 To 10   s = s + i Next i TextBox1.Text = s s ← 0 ループ i=1~10 s ← s + i ループ TextBox1.Text ← s End

回数を指定しての繰り返し s ← 0 ループ i= 0~9 s ← s +TextBox1.Lines(i) ループ TextBox1に入力された10個のデータの合計をTextBox2に出力する Start s = 0 For i = 0 To 9    s  =  s +TextBox1.Lines(i) Next i TextBox2.Text = s s ← 0 ループ i= 0~9 s ← s +TextBox1.Lines(i) ループ TextBox2.Text ← s End

回数を指定しての繰り返し s ← 0 ループ i= 0~9 s ← s +TextBox1.Lines(i) ループ h ← s / 10 TextBox1に入力された10個のデータの平均をTextBox2に出力する Start s = 0 For i = 0 To 9    s  = s + TextBox1.Lines(i) Next i h = s / 10 TextBox2.Text = h s ← 0 ループ i= 0~9 s ← s +TextBox1.Lines(i) ループ h ← s / 10 TextBox2.Text ← h End

条件を指定しての繰り返し 前判定 後判定 ループ 条件 条件 条件 処理 処理 処理 ループ ループ 処理 処理 処理 条件 ループ 条件 条件が成立している間繰り返す 条件が成立するまで繰り返す ループ  条件  条件 不成立 条件 成立 前判定 処理 成立 不成立 処理 処理 ループ 条件が成立している間繰り返す 条件が成立するまで繰り返す ループ 後判定 処理 処理 処理  条件  ループ 条件 条件 成立 不成立 不成立 成立 ループ端記号を使った表現 判断記号を使ったループの表現

条件を指定しての繰り返し ループ 条件 処理 ループ ループ 処理 条件 ループ Do While 条件 処理 Loop 条件が成立している間繰り返す 条件が成立するまで繰り返す ループ Do While 条件   処理 Loop Do Until 条件   処理 Loop  条件  処理 ループ 前判定 条件が成立している間繰り返す 条件が成立するまで繰り返す Do    処理 Loop While 条件 Do    処理 Loop Until 条件 ループ 処理  条件  ループ 後判定

条件を指定しての繰り返し x = 1 x ← 1 Do Until x^2 > 100 x = x + 1 ループ Start x = 1 Do Until x^2 > 100   x = x + 1 Loop TextBox1.Text = x x ← 1 ループ x2 > 100 が成立するまで x← x + 1 ループ TextBox1.Text ← x End

Max < TextBox1.Lines(i) TextBox1に入力された10個のデータの最大値を求め,Textbox2に表示せよ. Start Max = TextBox1.Lines(0) For i= 1 to 9 IF Max < TextBox1.Lines(i) Then Max = TextBox1.Lines(i) End If Next  i TextBox2.Text = Max Max←TextBox1.Lines(0) ループ i =  1 ~ 9 成立 Max < TextBox1.Lines(i) 不成立 Max←TextBox1.Lines(i)    ループ   TextBox2.Text ← Max End

Max > TextBox1.Lines(i) TextBox1に入力された10個のデータの最小値を求め,Textbox2に表示せよ. Start Max = TextBox1.Lines(0) For i= 1 to 9 IF Max >TextBox1.Lines(i) Then Max = TextBox1.Lines(i) End If Next  i TextBox2.Text = Max Max←TextBox1.Lines(0) ループ i =  1 ~ 9 成立 Max > TextBox1.Lines(i) 不成立 Max←TextBox1.Lines(i)    ループ   TextBox2.Text ← Max End

Min > TextBox1.Lines(i) TextBox1に入力された10個のデータの最小値を求め,Textbox2に表示せよ. Start Min= TextBox1.Lines(0) For i= 1 to 9 IF Min > TextBox1.Lines(i) Then Min = TextBox1.Lines(i) End IF Next  i TextBox2.Text = Min Min←TextBox1.Lines(0) ループ i =  1 ~ 9 成立 Min > TextBox1.Lines(i) 不成立 Min←TextBox1.Lines(i)    ループ   TextBox2.Text ← Min End

i = 1 ~ 9 i = 1 ~ 9 TextBox2.Text ← Max TextBox3.Text ← Min TextBox1に入力された10個のデータの最大値、最小値を求めTextBox2,3に表示せよ. Start 1 Max←TextBox1.Lines(0) Min←TextBox1.Lines(0) ループ ループ i =  1 ~ 9 i =  1 ~ 9 成立 成立 Max < TextBox1.Lines(i) Min > TextBox1.Lines(i) 不成立 不成立 Max←TextBox1.Lines(i) Min←TextBox1.Lines(i)    ループ      ループ   TextBox2.Text ← Max TextBox3.Text ← Min 1 End

i = 1 ~ 9 TextBox2.Text ← Max TextBox3.Text ← Min Start 最大値 最小値 Start Max = TextBox1.Lines(0) Min = TextBox1.Lines(0)  For i= 1 to 9 IF Max < TextBox1.Lines(i) Then Max = TextBox1.Lines(i) End If IF Min > TextBox1.Lines(i) Then Min = TextBox1.Lines(i) Next i TextBox2.Text = Max TextBox3.Text = Min Max←TextBox1.Lines(0) Min←TextBox1.Lines(0) ループ i =  1 ~ 9 成立 Max < TextBox1.Lines(i) 不成立 Max←TextBox1.Lines(i) 成立 Min > TextBox1.Lines(i) 不成立 Min←TextBox1.Lines(i)    ループ   TextBox2.Text ← Max TextBox3.Text ← Min End

各基本構造の処理の部分に3つの基本構造のいずれかを入れてよい。 プログラムの3つの基本構造 処理1 条件 成立 ループ  条件  不成立 処理 処理2 処理2 処理1 ループ 順次構造 選択構造 繰り返し構造 各基本構造の処理の部分に3つの基本構造のいずれかを入れてよい。

階層構造 条件 条件 処理2 処理1 ループ 条件 処理2 処理3 ループ ループ 条件 処理 ループ 選択構造 成立 不成立 条件 成立 処理2 処理1 不成立 ループ  条件  処理2 選択構造 処理3 ループ ループ  条件  処理 選択構造の中に繰り返し構造が入った形 ループ 繰り返し構造

階層構造 ループ ループ 条件 条件 処理 条件 ループ 処理2 処理1 条件 ループ 処理2 処理1 繰り返し構造  条件   条件  処理 条件 成立 ループ 不成立 処理2 処理1 繰り返し構造 条件 成立 ループ 不成立 繰り返し構造の中に選択構造が入った形 処理2 処理1 選択構造

構造化されていないアルゴリズム JISフローチャートだと構造化されてないアルゴリズムも記述できてしまう。 条件A 処理1 処理2 条件B 成立 条件A 不成立 処理1 処理2 成立 条件B 不成立 処理4 処理3 JISフローチャートだと構造化されてないアルゴリズムも記述できてしまう。

構造化されていないプログラムを構造化する 成立 成立 条件A 条件A 処理234 処理13 不成立 不成立 処理1 処理1 処理2 処理2 処理34 処理3 成立 条件B 条件B 成立 不成立 不成立 処理4 処理3 処理4 処理3 Visual Basic は、構造化されていないプログラムを書くのは難しい。 アルゴリズムを構造化すると プログラムの保守性が増す。

構造化チャート ○順次構造、選択構造、繰り返し構造の3構造のみを記述できる。 ○プログラムの構造を把握しやすい。  ○順次構造、選択構造、繰り返し構造の3構造のみを記述できる。  ○プログラムの構造を把握しやすい。      縦軸は処理の流れを、横方向は制御の主従関係を表す。  NSチャート (アメリカ)  PAD (日立)  HCP(NTT)  SPD(NEC)  YACⅡ(富士通)  HIPO(アメリカ IBM) 

PAD ループ ループ 処理1 条件 条件 処理 処理 処理2 処理2 処理1 条件 ループ ループ 処理1 処理1 条件 処理 条件 処理 成立  条件  不成立 処理 処理 処理2 処理2 処理1  条件  ループ ループ 繰り返し構造(前判定) 繰り返し構造(後判定) 順次構造 選択構造 処理1 処理1 条件 処理 条件 処理 条件 処理2 処理2

選択構造 A>=60 不合格と表示 合格と表示 もし、Aが60以上ならTextBox1に“合格” 、そうでないなら、“不合格” と表示する。 不合格と表示 合格と表示 A>=60 Start 成立 IF A>=60 Then   TextBox1.text=“合格” Else   TextBox1.text=“不合格” End If A>=60 不成立 不合格と表示 合格と表示 End

回数を指定しての繰り返し ループ i=1~10 処理1 処理1 ループ 処理1を10回実行する Start For i = 1 To 10   処理1 Next i i=1~10 i=1~10 処理1 処理1 ループ End

回数を指定しての繰り返し s ← 0 s ← 0 ループ i=1~10 s ← s + i TextBox1.Text ← s ループ Start s = 0 For i = 1 To 10   s = s + i Next i TextBox1.Text = s s ← 0 s ← 0 ループ i=1~10 s ← s + i i=1~10 s ← s + i TextBox1.Text ← s ループ TextBox1.Text ← s End

条件を指定しての繰り返し x = 0 x ← 0 Do Until x^2 > 100 x← 0 x = x + 1 ループ Start x = 0 Do Until x^2 > 100   x = x + 1 Loop TextBox1.Text = x x ← 0 x← 0 ループ x2 > 100 が成立するまで x2 > 100  が 成立するまで x ← x + 1 x← x + 1 ループ TextBox1.Text ← x TextBox1.Text ← x End

Max < TextBox1.Lines(i) 最大値 ループ    ループ   Max←TextBox1.Lines(0) Start End TextBox2.Text ← Max i =  1 ~ 9 Max < TextBox1.Lines(i) Max←TextBox1.Lines(i) 不成立 成立 Max = TextBox1.Lines(0) For i= 1 to 9  IF Max < TextBox1.Lines(i) Then   Max = TextBox1.Lines(i)   End IF Next  i TextBox2.Text = Max Max←TextBox1.Lines(0) Max←TextBox1.Lines(i) i=1~9 Max < TextBox1.Lines(i) TextBox2.Text ← Max

i = 1 ~ 9 TextBox2.Text ← Max TextBox3.Text ← Min Start 最大値 最小値 Start Max = TextBox1.Lines(0) Min = TextBox1.Lines(0)  For i= 1 to 9 IF Max < TextBox1.Lines(i) Then Max = TextBox1.Lines(i) End IF IF Min > TextBox1.Lines(i) Then Min = TextBox1.Lines(i) Next  i TextBox2.Text = Max TextBox3.Text = Min Max←TextBox1.Lines(0) Min←TextBox1.Lines(0) ループ i =  1 ~ 9 成立 Max < TextBox1.Lines(i) 不成立 Max←TextBox1.Lines(i) 成立 Min > TextBox1.Lines(i) 不成立 Min←TextBox1.Lines(i)    ループ   TextBox2.Text ← Max TextBox3.Text ← Min End

Max < TextBox1.Lines(i) Max←TextBox1.Lines(0) 最大値 最小値 Max←TextBox1.Lines(i) i=1~9 Min←TextBox1.Lines(0) TextBox2.Text ← Max Max < TextBox1.Lines(i) Max←TextBox1.Lines(0) TextBox3.Text ← Min Min←TextBox1.Lines(i) Min > TextBox1.Lines(i) Max = TextBox1.Lines(0) Min = TextBox1.Lines(0)  For i= 1 to 9   IF Max < TextBox1.Lines(i) Then     Max = TextBox1.Lines(i)   End IF   IF Min > TextBox1.Lines(i) Then     Min = TextBox1.Lines(i) Next i TextBox2.Text = Max TextBox3.Text = Min プログラムのインデント(字下げ)とPADの列が同じ. インデント,PADの列は制御の主従関係を表す. <左が命令をする側><右が命令をされる側>