フローチャートの書き方

Similar documents
コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

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

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

Microsoft PowerPoint - class04.ppt

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

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

kiso2-09.key

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

Microsoft Word - VBA基礎(3).docx

プログラミング基礎

情報処理Ⅰ

Microsoft PowerPoint - 第3回目.ppt [互換モード]

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Microsoft Word - DF-Salford解説09.doc

演習課題No12

Microsoft Word - Cプログラミング演習(1)_2012

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

4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for

新・明解C言語で学ぶアルゴリズムとデータ構造

物質工学科 田中晋

PowerPoint Presentation

情報処理演習 B8クラス

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

cp-7. 配列

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

3-4 switch 文 switch 文は 単一の式の値によって実行する内容を決める ( 変える ) 時に用いる 例えば if 文を使って次のようなプログラムを作ったとする /* 3 で割った余りを求める */ #include <stdio.h> main() { int a, b; } pri

PowerPoint プレゼンテーション

Microsoft PowerPoint - 4.pptx

PowerPoint Presentation

プログラミング基礎

Microsoft PowerPoint - C4(反復for).ppt

Microsoft Word - 3new.doc

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

プログラミング実習I

PowerPoint Presentation

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

Java講座

Microsoft Word - VBA基礎(6).docx

Microsoft PowerPoint - 説明3_if文switch文(C_guide3)【2015新教材対応確認済み】.pptx

PowerPoint Presentation

Microsoft Word - Cプログラミング演習(9)

ポインタ変数

プログラミング入門1

Prog1_6th

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

初歩のC言語ターミナル_2014_May.pages

Microsoft Word - no103.docx

< 中略 > 24 0 NNE 次に 指定した日時の時間降水量と気温を 観測地点の一覧表に載っているすべての地点について出力するプログラムを作成してみます 観測地点の一覧表は index.txt というファイルで与えられています このファイルを読みこむためのサブルーチンが AMD

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

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

C言語によるアルゴリズムとデータ構造

PowerPoint プレゼンテーション

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

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

演習1

Microsoft Word - no202.docx

プログラミングA

講習No.10

kiso2-06.key

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

演算増幅器

3. 標準入出力

Prog1_15th

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

プログラミングA

Microsoft PowerPoint - å®�æ−•è©¦é¨fi3ㆮ対ç�Œ.pptx

Microsoft PowerPoint - 3.pptx

memo

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

プログラミング実習I

Microsoft PowerPoint - lec4.ppt

1. 関数 scanf() 関数 printf() は変数の値を画面に表示しますが それに対し関数 scanf() はキーボードで入力した値を変数に代入します この関数を活用することで対話式 ( ユーザーの操作に応じて処理を行う ) プログラムを作ることができるようになります 整数の和

Microsoft PowerPoint - prog04.ppt

C言語講座 ~ファイル入出力編~

Microsoft Word - Training4_判断と制御.docx

kiso2-03.key

Microsoft PowerPoint - prog07.ppt

ゲームエンジンの構成要素

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

情報処理概論(第二日目)

JavaプログラミングⅠ

プログラミング基礎

2006年10月5日(木)実施

Microsoft PowerPoint - kougi4.ppt

講習No.9

< 中略 > 24 0 NNE 次に 指定した日時の時間降水量と気温を 観測地点の一覧表に載っているすべての地点について出力するプログラムを作成してみます 観測地点の一覧表は index.txt というファイルで与えられています このファイルを読みこむためのサブルーチンが AMD

プログラミング基礎

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

Taro-ポインタ変数Ⅰ(公開版).j

今までの復習 プログラムで最低限必要なもの 入力 ( キーボードから ファイルから ) 出力 ( 画面へ ファイルへ ) 条件分岐 : 条件の成立 不成立により 異なる動作をする 繰り返し : 一定の回数の繰返し 条件成立の間の繰返し 関数の定義 関数の呼び出し C ではそれ以外に ポインタ データ

Javaによるアルゴリズムとデータ構造

プログラミング入門1

Microsoft PowerPoint - lec10.ppt

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

ex04_2012.ppt

program7app.ppt

Si 知識情報処理

※ ポイント ※

PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU

Transcription:

アルゴリズム ( 算法 ) 入門 1 プログラムの作成 機械工学専攻泉聡志 http://masudahp.web.fc2.com/flowchart/index.html 参照 1 何をどのように処理させたいのか どのようなデータを入力し どのような結果を出力させるのか問題を明確にする 2 問題の内容どおりに処理させるための手順を考える ( フローチャートの作成 )~アルゴリズム( 算法 ) の作成 3 論理的に誤りがなければ 文法にしたがってプログラムを作成する ( もしくは人に頼む ) ( 文法上の誤りは 実行させると表示されるのでそれを修正する 論理的な誤りは 入力データ出力結果から判断しなければならない ) プログラムが得意なところ 不得意なところを理解しておくことが大事 2 配列を使うということプログラムは 問題設定をいかに 配列 に落とし込むかという作業になる つまり プログラムは人間のような抽象的な思考はできないため 記憶や論理を配列を使って表現する必要がある 例えば A(1), A(2),. A(N) という配列を大きさ順に並べる時は N(1)=3, N(2)=6, N(3)=5 などと i 番目の A(i) の大きさの順番の配列 N(i) を用意したり N2(1)=2, N2(2)=3, N2(3)=1,. などと i 番目に大きい A の番号の配列 N2(i) を用意する 自由に配列をたくさん作って有効に活用できるかがキーとなる ただし C 言語の配列は A(0), A(1),.. とゼロからはじめることに注意が必要である 1

3 フローチャートの記号 フローチャートの記号は JIS 規格で決められている 記号名前機能 Fortran C 端子 フローチャート Program test int main( ){ のはじめと終わ... りを表す 処理 計算 代入など A=B*C a=b*c; の処理を表す 判断 条件によって分 if (A(1).gt.A(2)) if(a[0]>a[1]){ 岐する else else{ if ループ 繰り返しの始ま do i = 1,N for(i=0;i<n;i++){ りと終わり do while( ){ do{ while( ) 入力 キーボードから read(5,*) scanf( %lf,&a); の入力 表示 ディスプレイへ write(6,*) printf( %lf,a); の表示 定義済 あらかじめ定義 Subroutine test (a, double test (double a, み処理 された処理のま b, c) double b){ とまり ( 関数, サ ブルーチン ) return c; 出入力 ファイルへの出 open(1, fp=fopen( in.dat, r ); 入力 file= test.dat ) fscanf(fp, %lf,&a); read(1,*) fclose(fp); write(1,*) fp=fopen( out.dat, w ); fprintf(fp, %lf n,a); fclose(fp); 2

4 フローチャートのルール 処理の流れは原則上から下へ 左から右へ それに逆行する場合には矢印にする 線が立体交差しないようにする 二つ以上の線を集めてひとつにして良い ( 例題 : 直線型フローチャート ) 長方形の 2 辺の長さから面積を求めるプログラムを作成せよ 1 2 辺の長さ (X, Y) から面積を次の式で求める 面積 = X Y 2 入力データ 長方形の縦の長さと横の長さ 出力結果 面積 3 手順 (1) 2つのデータを入力する (2) 面積を計算する (3) 計算の結果を表示する フローチャート プログラム (FORTRAN) プログラム (C) 開始 X, Y 入力 X Y A A 出力終了 Program rect write(6,*) X, Y? read(5,*)x, Y A=X*Y write(6,*)a float x, y, a; printf("x="); scanf("%lf", &x); printf("y="); scanf("%lf", &y); a = x * y; printf("a=%lf n", a); 3

フローチャートの上から下へ処理の順序が一直線に進む ( 流れる ) 形の処理である 基本的には 1 データ入力 ( データの記憶 ) 2 計算 3 結果出力 の順である 5 フローチャートの作成 5.1 分岐型条件を判定した結果によって 2 つ以上の方向に処理の流れが分かれるものである 条件は 1 等号 不等号の式で表し 成立 不成立によって流れを変える 2 比較する値 ( 式 ) を記述し 比較結果によって流れを変える の 2 通りが考えられる フローチャート内の表記の方法が違うが 1 2とも同じフローチャート記号である A の値の方が B より大きければ 下の流れ線へ進む 逆に B の値の方が A より大きければ 右の流れ線へ進む 分岐が 3 つ 4 つになる場合は 以下のように書かれる 4

例題 2 つの値 X,Y を入力して大きい方を出力する X と Y が同じときは X を出力する フローチャートを作成せよ フローチャートプログラム (FORTRAN) プログラム (C) Program bunki write(6,*) X, Y? read(5,*)x, Y if (X.ge.Y) then write(6,*)x else write(6,*)y if float x, y; printf("x="); scanf("%lf", &x); printf("y="); scanf("%lf", &y); if(x>=y){ printf("%lf n", x); else{ printf("%lf n", y); 5.2 複雑なフローチャート ( 繰り返し型 ) 処理のある範囲を繰り返す処理である 下図フローチャートでは [i の値出力 ] の処理を 10 回繰り返す ループ端 に書かれている数値は次のような意味である i = 1, 10, 1 変数 = 初期値, 終値, 増分値最初に 変数 (i) に初期値 (1) を記憶して繰返し範囲を処理する 二度目以降は変数 (i) に増分値 (1) を加算して終値 (10) 以下であれば繰返し範囲を処理する これを終値を超えるまで繰り返す ここでは ループ端 の組 ( ペア ) がわかりやすいように記号を点線でつないで示しているが 本来はなくても良い 5

フローチャート プログラム (FORTRAN) プログラム (C) 開始 i=1, 10, 1 A(i)=float(i) A Program loop dimension a(10) do i=1,10 a(i)=float(i) do int i; for(i=0;i<=9;i++){ printf( %d n,i); 終了 繰り返しの回数を分岐を利用して制御する場合もある フローチャート プログラム (FORTRAN) プログラム (C) 開始 Program loop dimension a(100) do i=1,100 int i; A=1, 100, 1 a(i)=float(i) if (i.gt.10) exit for(i=1;i<=100;i++){ printf( %d n,i); A(i)=float(i) do if(i>10){ break; A>10 NO YES A 終了 二重ループ繰返しを入れ子にしたループである 下図のように ループ端 の各ペアが交差してはいけない 6

5.3 サブルーチン処理が複雑になってくると ひとつのフローチャートでは表しにくくなる そこで まとまった処理を別のフローチャートとして表し 主 ( メイン ) となるフローチャートから呼び出して利用できるようにすると都合がよい 例題式 2x+5 を計算する処理を定義済み処理として作成する 計算に必要なデータ x の入力と結果の出力はメイン側で行うものとする フローチャートを作成せよ フローチャートプログラム (FORTRAN) プログラム (C) Program sub_routine read(5,*)x Y=sub(X) write(6,*)y real function sub(x) sub=2*x+5 function int sub(float x); float x, y; printf("data="); scanf("%lf", &x); y = sub(x); printf("result=%lf n", y); int sub(float x){ float y; y = 2 * x + 5; return y; 7

配列の受け渡し フローチャートプログラム (FORTRAN) プログラム (C) Program sub_routine parameter (nn=2) dimension x(2), y(2) read(5,*)x(1),x(2) call=sub(nn, x, y) write(6,*)y(1),y(2) subroutine sub(nn, x, y) dimension x(nn), y(nn) y(1)=2*x(1)+5 y(2)=2*x(2)+5 return int sub(int x); int x, y; printf(" データ ="); scanf("%d", &x); y = sub(x); printf(" 計算結果 =%d n", y); int sub(int x){ int y; y = 2 * x + 5; return y; 8

サブルーチン形式で書いたら フローチャートプログラム (FORTRAN) プログラム (C) Program sub_routine read(5,*)x call sub(x, y) write(6,*)y subroutine sub(x,y) y=2*x+5 return int sub(int x); int x, y; printf(" データ ="); scanf("%d", &x); y = sub(x); printf(" 計算結果 =%d n", y); int sub(int x){ int y; y = 2 * x + 5; return y; 9