簡単な料金計算プログラムを題材にしたフローチャート図です。 ソースコードはChatGPTによる要件定義を基につくられた自動生成です。
元のpythonソースコード
#要件定義
#1.料金計算プログラムである。
#2.品物とその単価は以下の通り:
#りんご:1個100円
#みかん:1個80円
#3.ユーザーは合計5人おり、各ユーザーは次の情報を入力する:
#ユーザーの名前
#りんごの購入個数
#みかんの購入個数
#4.各ユーザーに対して、入力された個数に基づいてそれぞれの品物の総計を計算する。
#5.結果は以下のフォーマットで出力する:
#「userさん、リンゴがn個、みかんがn個で合計sum円になります。」
#ここで、userはユーザーの名前、nはそれぞれの品物の購入個数、sumは総計金額を表す。
#
def calculate_total(name, apple_count, orange_count):
# 単価の定義
apple_price = 100 # りんごの単価
orange_price = 80 # みかんの単価
# 合計金額の計算
total = apple_price * apple_count + orange_price * orange_count
# 結果をフォーマットして返す
return f"{name}さん、リンゴが{apple_count}個、みかんが{orange_count}個で合計{total}円になります。"
# 5人のユーザーに対して処理を実行
for i in range(5):
# ユーザー情報の入力
name = input(f"ユーザー{i+1}の名前を入力してください: ")
apple_count = int(input(f"{name}さん、リンゴの個数を入力してください: "))
orange_count = int(input(f"{name}さん、みかんの個数を入力してください: "))
# 結果の出力
print(calculate_total(name, apple_count, orange_count))
本体験版より出力後の、自動生成されたマークダウンソースファイル(拡張ファイル形式「.md」)
###### ユーザー定義関数
###### def calculate_total(name, apple_count, orange_count):
````mermaid
%%{init:{'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'black',
'primaryBorderColor':'#000000',
'lineColor':'gray',
'textColor':'#6A7FABCC',
'fontSize':'15px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
graph TD;
classDef default fill:#FFF4DD,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#FFC800,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#005060,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFFFFF,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#cde498,stroke:#333,stroke-width:2px;
classDef clrPattern6 fill:#F0B0A0,stroke:#333,stroke-width:2px;
classDef clrPattern7 fill:lightblue,stroke:#333,stroke-width:2px;
linkStyle default stroke:gray,stroke-width:2px;
%%データ項目
1("処理 開始")
5["【処理】
18: apple_price = 100 # りんごの単
価
"]
6["【処理】
19: orange_price = 80 # みかんの単
価
"]
7["【処理】
22: total = apple_price * appl
e_count + orange_price * orang
e_count
"]
6165[/" 【return文】
25: return f゛{name}さん、リンゴが{app
le_count}個、みかんが{orange_count}個
で合計{total}円になります。゛
"/]
8("処理 終了")
%%ルート設定
1-->5
5-->6
6-->7
7-->6165
6165-->8
###### 関数ブロック以外
````mermaid
%%{init:{'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'black',
'primaryBorderColor':'#000000',
'lineColor':'gray',
'textColor':'#6A7FABCC',
'fontSize':'15px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
graph TD;
classDef default fill:#FFF4DD,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#FFC800,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#005060,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFFFFF,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#cde498,stroke:#333,stroke-width:2px;
classDef clrPattern6 fill:#F0B0A0,stroke:#333,stroke-width:2px;
classDef clrPattern7 fill:lightblue,stroke:#333,stroke-width:2px;
linkStyle default stroke:gray,stroke-width:2px;
%%データ項目
9[/" 【繰返文開始】
28: for i in range(5):
"\]:::clrPattern2
14["【入力】
30: name = input(f゛ユーザー{i+1}の名
前を入力してください: ゛)
"]:::clrPattern6
17["【処理】
31: apple_count = int(input(f゛
{name}さん、リンゴの個数を入力してください: ゛))
"]
20["【処理】
32: orange_count = int(input(f
゛{name}さん、みかんの個数を入力してください: ゛))
"]
22["【出力】
35: print(calculate_total(name
, apple_count, orange_count))
"]:::clrPattern5
23[\" 【繰返文終了】"/]:::clrPattern2
%%ルート設定
s([START])-->
9-->|ループ開始|14
14-->17
17-->20
20-->22
22-->23
23-->|ループ終了|e([end])
23-->|ループ継続|9
本体験版より出力後のマークダウンファイルのデータをもとにつくられたフローチャート図です。
フローチャート図は「%%ルート設定」に書かれたデータ項目同士のつながりで表現してます。
%%{init:{'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'black',
'primaryBorderColor':'#000000',
'lineColor':'gray',
'textColor':'#6A7FABCC',
'fontSize':'15px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
graph TD;
classDef default fill:#FFF4DD,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#FFC800,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#005060,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFFFFF,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#cde498,stroke:#333,stroke-width:2px;
classDef clrPattern6 fill:#F0B0A0,stroke:#333,stroke-width:2px;
classDef clrPattern7 fill:lightblue,stroke:#333,stroke-width:2px;
linkStyle default stroke:gray,stroke-width:2px;
%%データ項目
1("処理 開始")
5["【処理】
18: apple_price = 100 # りんごの単
価
"]
6["【処理】
19: orange_price = 80 # みかんの単
価
"]
7["【処理】
22: total = apple_price * appl
e_count + orange_price * orang
e_count
"]
6165[/" 【return文】
25: return f゛{name}さん、リンゴが{app
le_count}個、みかんが{orange_count}個
で合計{total}円になります。゛
"/]
8("処理 終了")
%%ルート設定
1-->5
5-->6
6-->7
7-->6165
6165-->8
%%{init:{'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'black',
'primaryBorderColor':'#000000',
'lineColor':'gray',
'textColor':'#6A7FABCC',
'fontSize':'15px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
graph TD;
classDef default fill:#FFF4DD,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#FFC800,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#005060,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFFFFF,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#cde498,stroke:#333,stroke-width:2px;
classDef clrPattern6 fill:#F0B0A0,stroke:#333,stroke-width:2px;
classDef clrPattern7 fill:lightblue,stroke:#333,stroke-width:2px;
linkStyle default stroke:gray,stroke-width:2px;
%%データ項目
9[/" 【繰返文開始】
28: for i in range(5):
"\]:::clrPattern2
14["【入力】
30: name = input(f゛ユーザー{i+1}の名
前を入力してください: ゛)
"]:::clrPattern6
17["【処理】
31: apple_count = int(input(f゛
{name}さん、リンゴの個数を入力してください: ゛))
"]
20["【処理】
32: orange_count = int(input(f
゛{name}さん、みかんの個数を入力してください: ゛))
"]
22["【出力】
35: print(calculate_total(name
, apple_count, orange_count))
"]:::clrPattern5
23[\" 【繰返文終了】"/]:::clrPattern2
%%ルート設定
s([START])-->
9-->|ループ開始|14
14-->17
17-->20
20-->22
22-->23
23-->|ループ終了|e([end])
23-->|ループ継続|9