HOME»基本情報技術者試験掲示板»【科目B】アルゴリズムとプログラミングの問題について
投稿する
【科目B】アルゴリズムとプログラミングの問題について [5933]
kosukeさん(No.1)
基本情報技術者の過去問を学習中の者です。
以下、内容になります。
●質問
以下に記載している私の解き方の⑦の工程で、11行目のif文はtrueが返ると認識しています。
この時点で大域変数cntは3が代入されていると思っているのですが、何故0になるのでしょうか?
説明文を読んでも理解しきれていないので、ご教示頂きたく思います。
●プログラム
1: 大域: 整数型: cnt ← 0
2: 〇proc1()
3: "A"を出力する
4: for(iを1から3まで1ずつ増やす)
5: "B"を出力する
6: cnt ← cnt + 1
7: endfor
8: proc3()
9: 〇proc2()
10: proc3()
11: if(cnt > 1)
12: "C"を出力する
13: else
14: "D"を出力する
15: cnt ← cnt + 1
16: endif
17: proc1()
18: 〇proc3()
19: "E"を出力する
●回答
オ
●処理順序(私が行った場合)
①2行目:proc1()から処理開始
※proc1()の処理は途中割愛します
②proc1()の処理が完了した際、大域変数cntには3が代入されている。
③9行目:proc2()の処理開始
④10行目:proc3()呼び出し
⑤18行目:proc3()に移る
⑥19行目:Eを出力
⑦11行目:proc2()に戻ってきて、if文はtrueが返る(ここで実際の処理と解釈がずれる)
⑧12行目:Cが出力される(本来はif文がfalseになって、Dが出力されないといけない)
以下、内容になります。
●質問
以下に記載している私の解き方の⑦の工程で、11行目のif文はtrueが返ると認識しています。
この時点で大域変数cntは3が代入されていると思っているのですが、何故0になるのでしょうか?
説明文を読んでも理解しきれていないので、ご教示頂きたく思います。
●プログラム
1: 大域: 整数型: cnt ← 0
2: 〇proc1()
3: "A"を出力する
4: for(iを1から3まで1ずつ増やす)
5: "B"を出力する
6: cnt ← cnt + 1
7: endfor
8: proc3()
9: 〇proc2()
10: proc3()
11: if(cnt > 1)
12: "C"を出力する
13: else
14: "D"を出力する
15: cnt ← cnt + 1
16: endif
17: proc1()
18: 〇proc3()
19: "E"を出力する
●回答
オ
●処理順序(私が行った場合)
①2行目:proc1()から処理開始
※proc1()の処理は途中割愛します
②proc1()の処理が完了した際、大域変数cntには3が代入されている。
③9行目:proc2()の処理開始
④10行目:proc3()呼び出し
⑤18行目:proc3()に移る
⑥19行目:Eを出力
⑦11行目:proc2()に戻ってきて、if文はtrueが返る(ここで実際の処理と解釈がずれる)
⑧12行目:Cが出力される(本来はif文がfalseになって、Dが出力されないといけない)
2025.06.11 10:56
kosukeさん(No.2)
投稿者です。
回答にオと記載していますが記載ミスです。
正しくは以下になります。
"E", "D", "A", "B", "B", "B", "E"
失礼しました。
回答にオと記載していますが記載ミスです。
正しくは以下になります。
"E", "D", "A", "B", "B", "B", "E"
失礼しました。
2025.06.11 12:46
電タックさん(No.3)
★FE ブロンズマイスター
もし”E"が最初の出力なら、①はproc2()から開始という問題ではないでしょうか、proc2()から開始していればcntは0ですよね。
2025.06.11 13:06
jjon-comさん(No.4)
★FE プラチナマイスター
2: 〇proc1()
9: 〇proc2()
18: 〇proc3()
は手続きの宣言です。
https://www.ipa.go.jp/shiken/syllabus/doe3um0000002djj-att/shiken_yougo_ver5_1.pdf の6枚目を参照
このプログラムがメモリにロードされると1: 大域: 整数型: cnt ← 0は実行されますが、https://www.fe-siken.com/bbs/5932.html を参照
2~8行、9~17行、18~19行は、手続の内容が定義されただけで、いっさい実行しません。
プログラムを書いた順に上から自動的に、proc1()処理開始、proc2()処理開始、proc3()処理開始、と実行が流れていくわけではありません。
このプログラムの手続を実行するには、外部からの手続の呼び出しが必要です。
No.2の出力結果になるのなら、No.3の指摘どおり、proc2()の呼び出しで処理を開始しているはずです。
9: 〇proc2()
18: 〇proc3()
は手続きの宣言です。
https://www.ipa.go.jp/shiken/syllabus/doe3um0000002djj-att/shiken_yougo_ver5_1.pdf の6枚目を参照
このプログラムがメモリにロードされると1: 大域: 整数型: cnt ← 0は実行されますが、https://www.fe-siken.com/bbs/5932.html を参照
2~8行、9~17行、18~19行は、手続の内容が定義されただけで、いっさい実行しません。
プログラムを書いた順に上から自動的に、proc1()処理開始、proc2()処理開始、proc3()処理開始、と実行が流れていくわけではありません。
このプログラムの手続を実行するには、外部からの手続の呼び出しが必要です。
No.2の出力結果になるのなら、No.3の指摘どおり、proc2()の呼び出しで処理を開始しているはずです。
2025.06.11 13:17
電タックさん(No.5)
★FE ブロンズマイスター
https://www.fe-siken.com/kakomon/05_haru/b2.html
なんか見覚えが合ったのでこの問題を複雑にした感じかもしれませんね
こんな感じの記載が問題上部にあるかもしれません。
なんか見覚えが合ったのでこの問題を複雑にした感じかもしれませんね
>手続き proc2 を呼び出すと
こんな感じの記載が問題上部にあるかもしれません。
2025.06.11 13:48
kosukeさん(No.6)
jjon-comさん
返信が遅くなりすみません。
プログラムをproc1()から順番に読んでおりました。
ご教示頂き有難うございます。
返信が遅くなりすみません。
プログラムをproc1()から順番に読んでおりました。
ご教示頂き有難うございます。
2025.06.13 08:50
kosukeさん(No.7)
電タックさん
返信が遅くなりすみません。
"手続き proc2 を呼び出す"と記載がありましたが、勘違いしてproc1()から読んで、
proc2()以降の出力を回答から選択すると解釈しておりました。
ご教示頂き有難うございます。
返信が遅くなりすみません。
"手続き proc2 を呼び出す"と記載がありましたが、勘違いしてproc1()から読んで、
proc2()以降の出力を回答から選択すると解釈しておりました。
ご教示頂き有難うございます。
2025.06.13 08:52
