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

Similar documents
フローチャートの書き方

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

プログラミング基礎

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

Microsoft Word - VBA基礎(3).docx

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

PowerPoint Presentation

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

Microsoft PowerPoint - while.ppt

プログラミングA

Microsoft PowerPoint - class04.ppt

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

プログラミングA

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

プログラミング基礎

Microsoft Word - VBA基礎(2).docx

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

プログラミング基礎

情報処理Ⅰ

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

Microsoft Word - 3new.doc

cp-7. 配列

プログラミング実習I

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

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB)

Microsoft PowerPoint - C4(反復for).ppt

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

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

Microsoft Word - VBA基礎(6).docx

Java講座

Microsoft Word - no11.docx

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

JavaプログラミングⅠ

kiso2-09.key

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

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

プログラミング実習I

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

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

Report#2.docx

Microsoft PowerPoint - 11.pptx

Report#2.docx

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

Microsoft PowerPoint - 4.pptx

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

02: 変数と標準入出力

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

DVIOUT

メソッドのまとめ

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

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

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

2006年10月5日(木)実施

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

PowerPoint プレゼンテーション

02: 変数と標準入出力

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

PowerPoint プレゼンテーション

Microsoft PowerPoint - Visualプログラミング

ポインタ変数

Java KK-MAS チュートリアル

kiso2-03.key

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう

PowerPoint Presentation

講習No.10

演算増幅器

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな

講習No.9

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

関数の中で宣言された変数の有効範囲はその関数の中だけです さっきの rectangle _s で宣言されている変数 s は他の関数では使用できません ( 別の関数で同じ名前の変数を宣言することはできますが 全く別の変数として扱われます このように ある関数の中で宣言されている変数のことをその関数の

講習No.1

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

正転時とは反対に回転する これが逆転である 図 2(d) の様に 4 つのスイッチ全てが OFF の場合 DC モータには電流が流れず 停止する ただし 元々 DC モータが回転していた場合は 惰性でしばらく回転を続ける 図 2(e) の様に SW2 と SW4 を ON SW1 と SW3 を O

ex04_2012.ppt

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

PowerPoint プレゼンテーション

ポインタ変数

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

Microsoft Word - 03

kiso2-06.key

PowerPoint Presentation

プログラミング入門1

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Microsoft PowerPoint - prog08.ppt

第2回講義:まとめ

マウス操作だけで本格プログラミングを - 世界のナベアツをコンピュータで - プログラムというと普通は英語みたいな言葉で作ることになりますが 今回はマウスの操作だけで作ってみます Baltie, SGP System 操作説明ビデオなどは 高校 情

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

Microsoft PowerPoint - lec4.ppt

program7app.ppt

Microsoft PowerPoint - C_Programming(3).pptx

プログラム言語及び演習Ⅲ

Microsoft Word - no103.docx

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

コンピュータの構成

Microsoft PowerPoint - ruby_instruction.ppt

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

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

Transcription:

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n を入力してもらい その後 1 から n までの全ての整数の合計 sum を計算し 最後にその sum を表示するプログラムのフローチャートの例である 図 1 の様に 図で計算手順を表せば プログラムの流れが視覚的に理解できるのが理解できるだろう また フローチャートを使えば 特定のコンピュータ言語の知識がなくても プログラムの処理手順が理解できるため プログラムの仕様書などに良く使われる さらに アルゴリズム ( コンピュータの処理手順を 特定のコンピュータ言語によらずに表現した物 ) の視覚的な表現にもフローチャートが良く使われる なお 図 1 のフローチャートから Pascal のプログラムを作成するとリスト 1 の様になる また C 言語のプログラムを作成するとリスト 2 の様になる これらの例からも フローチャートが 特定のコンピュータ言語によらずに 処理手順を図示できている事が理解できる なお 後の講義でアセンブリ言語 ( マイコンの CPU が理解できる機械語を記号化した言語 ) を学ぶが 変数 sum に変数 i を足して その結果を sum に代入する (sum + i sum) というような Pascal や C 言語などの高級言語では 1 行で記述できる処理も アセンブリ言語では数行に渡って記述する必要がある そのため アセンブリ言語ではリストを見ても処理の概要が理解しにくい事が多く プログラムを書く前にフローチャートを描いて 処理の流れを把握しておく意義が大きい リスト 1 図 1 を Pascal でプログラム化したもの program SumUp1(input,output); n,sum,i : integer; readln(n); sum:=0; for i:=1 to n do sum:=sum+i; 1

end; writeln(sum); #include <stdio.h> リスト 2 図 1 を C 言語でプログラム化したもの int main(void) { int n,sum,i; } scanf("%d",&n); sum=0; for(i=1; i<=n; i++) { sum+=i; } printf("%d\n",sum); return 0; フローチャートの描き方フローチャートの描き方には 色々な流儀がある 日本では JIS 規格でフローチャートの描き方が規格化されているものの 必ずしも JIS 規格の通りのフローチャートが一般に使われているとは限らない 以下にフローチャートの描き方の説明をするが 世間一般に使われているフローチャートが必ずしもこのルールに従っているわけではない事に注意が必要である フローチャートに使われる主な記号の一覧を 次のページの表 1 に示す フローチャートの最初と終わりには 端子記号を書く 端子記号の中には 図 1 の様に 開始 あるいは 終了 などと書く 計算や代入などの処理は 長方形の処理記号を使って表現する 処理記号の中には a に 1 を代入する などの言葉の表記で処理内容を記述するか 1 a などの様に矢印で代入を表して 処理内容を記述する サブルーチン (Pascal の関数や手続き C 言語の関数 ) の呼び出しには 定義済み処理記号を使う 記号の中には 呼び出す処理の名称を書く 外部の装置 ( キーボード ディスプレイ プリンタ ディスク ) などと情報の入出力をするには 平行四辺形の入出力記号を使う 入出力記号の中には x を入力 x を表示 など 入出力処理の内容を言葉で書く 条件判断により 処理を分岐させる場合 (if 文に相当 ) には 判断記号を使う 記号の中には i>5? などと 条件をクエスチョンマーク付きで書く 分岐先の流れ線や矢印には 図 1 の様に YES や NO と書いて 条件が成立した場合の流れと 条件が成立しなかったときの流れを区別する 変数の初期化など 各種初期設定の作業は 六角形の準備記号で表す ただし 初期設定の作業も処理 2

記号で表す流儀もある 端子記号 処理記号 定義済み処理記号 入出力記号 判断記号 準備記号は 流れ線と呼ばれる実線か 矢印付きの線で結び 処理がどの順番で流れるかを示す 原則的には処理は上から下に流れるようにフローチャートを描き 各記号は流れ線で結ぶ しかし 分岐処理や反復処理などの場合は 処理を上から下へ流す書き方ができないこともある その場合は矢印付きの線を使って 処理の流れの方向を示す 表 1 フローチャートで使われる主な記号 記号 名称 意味 端子 フローチャートの開始と終了を表す 処理 計算や代入などの処理を表す 定義済み処理入出力判断 プログラムの別の部分で既に定義された処理 ( サブルーチン ) の呼び出しを表す 外部の装置とのデータの入出力処理を表す 条件による分岐を表す 準備 変数の初期化など 初期設定の作業を表す 流れ線と 矢印 複数の記号をつなぎ 処理の流れを示す 通常は流れ線 ( 普通の実線 ) を使 い 流れ線の上側の記号から下側の記号に処理が流れる事を表すが そ れ以外の方向に処理が流れるときに矢印を使う 順次処理の例条件判断による分岐や 反復 ( ループ ) を含まず 各処理を順次に実行する場合の例として ユーザーが変数 x の値を入力し 次に y に x の 2 倍を代入して 最後に y をディスプレイに表示するプログラムのフローチャートを図 2 に示す この例では 開始と終了の端子記号の間に x の入力 y の計算 y の表示の処理が 上から下に一直線に並んでおり 理解しやすいであろう 図 2 のフローチャートから Pascal のプログラムを作成した例をリスト 3 に示す リスト 3 図 2 を Pascal でプログラム化したもの program double(input,output); x,y : integer; readln(x); 3

y:=x*2; writeln(y); 図 2 とリスト 3 とを見比べると分かるように プログラム名の宣言 (program double(input,output);) や変数の宣言 ( x,y:integer;) など プログラム中の直接何らかの処理をしない行は それらに相当する記述がフローチャート内には現れない よって フローチャートからプログラムを作成する際には これらの宣言文を適時補う必要がある 条件分岐の例条件判断をして処理を分岐させる例として ユーザーが変数 x の値を入力し x が負の値なら マイナス x が 0 なら ゼロ x が正の値なら プラス と画面に表示するプログラムのフローチャートを図 3 に示す 判断記号により 処理が分岐すると 分岐した処理は 必ずどこかで合流する 図 3 の場合 終了の端子記号の直前で 3 つの処理の流れが 1 つに合流している様子が分かる 条件分岐は Pascal の場合 通常 if 文によって実現される ( 場合によっては case 文を使う事もある ) 図 3 のフローチャートから Pascal でプログラムを生成した例をリスト 4 に示す リスト 4 図 3 を Pascal でプログラム化したもの program sign(input,output); x : integer; readln(x); if x<0 then writeln(' マイナス ') else if x=0 then writeln(' ゼロ ') else 4

end; writeln(' プラス '); 永久ループの例何らかの処理を永遠に繰り返す事を永久ループという 永久ループを含む例として 1 2 3 4 と 1 ずつ大きな数を表示し続けるプログラムのフローチャートの例を図 4 に示す ( ただし コンピュータで扱える数には上限があるため このフローチャートに従って作ったプログラムは いずれ変数 i がオーバーフローする ) 図 4 を見ると 終了の端子記号がないことに気づく 永久ループするプログラムは 終了する事がないので 終了の端子記号がフローチャートに現れない マイコンのプログラムは 電源を切るまで同じ処理を繰り返すように作ることが多いため この様な終了の端子記号のないフローチャートになる場合が多い 永久ループは Pascal では while 文や repeat until 文により記述する事が多い 図 4 のフローチャートを while 文を使って Pascal プログラムにした例をリスト 5 に示す リスト 5 図 4 を Pascal でプログラム化したもの program loop(input,output); i : integer; i:=1; while true do writeln(i); i:=i+1; end; 終了するループの例図 4 の様に無限に繰り返すループもあるが ループは通常 何らかの条件により終了する場合が多い 図 1 に示した 1 から n( 入力した数 ) までの整数の合計を計算するプログラムは 終了するループを含む例である 終了するループは 終了条件の判断をループの最初で行う場合と ループの最後で行う場合とがある ( 特殊な例として ループの途中で終了条件の判断をする場合もある ) 図 1 のフローチャートでは ループの最初で終了条件を判断している この様な場合 Pascal でプログラム化する際には for 文や while 文を用いるのが普通である リスト 1 では for 文を用いている 5

図 1 のフローチャートを ループの最後で終了条件の判断をするように描きなおしたものが図 5 である この様にループの最後で終了条件の判断を行う場合は repeat until 文を使ってプログラム化するのが普通である リスト 6 に 図 5 のフローチャートからプログラムを作成した例を示す リスト 1 のプログラムでは ループの最初で終了条件を判断しているため n=0 の場合は 1 度もループが実行されず sum=0 になる 一方でリスト 6 のプログラムでは ループの最後で終了条件を判断しているため n=0 であっても 1 度だけループが実行されてしまう その結果 sum=1 となる この様に n=0 の時だけ実行結果が違うことに注意が必要であるが それ以外の値を入力した場合は どちらのプログラムも同じ結果となる リスト 6 図 5 を Pascal でプログラム化したもの program SumUp2(input,output); n,sum,i : integer; readln(n); sum:=0; i:=1; repeat sum:=sum+i; i:=i+1; until i>n; writeln(sum); 6