基本情報技術者試験な備忘録(アルゴリズム・基本的な解き方)

パソコン素人です。                    
アルゴリズム素人です。                    
                    
基本情報技術者試験の問題・テキスト等を見て気になったメモです。                    
多分間違っているのであまり見ないで下さい。すみません。                    
                    
                    
(記載内容や参考にしたネット情報など問題がありましたら、早急に削除いたします。)                    
問題文など、「基本情報技術者試験ドットコム」様を参考・引用させていただくことがあります。感謝。)                    
                    
アルゴリズム H23 秋 午前 問7                    

          
                    
選択肢                    
ア TANGO[i]→TANGO[i+1]                    
イ TANGO[i]→TANGO[n-i]                    
ウ TANGO[i+1]→TANGO[n-i]                    
エ TANGO[n-i]→TANGO[i]                    
                    
この問題ですが、変数を考える基本的な問題だと思います。                    
意味は分かるが、でも、結構時間がかかる。(もどかしい。)                    
問題集には、「図を書け」と記載されているが、それだけだと分かりにくい気がする。                    
                    
まず、tango[1]~tango[n]まで、単語が入っている。                    
仮に3単語とすると、                    
                    
初め                    
tango[0]                    
tango[1]    あ                
tango[2]    い                
tango[3]    う                
                    
の感じ。                    
n番目の単語を一番に持ってくるのだから、                    
                    
結果                    
tango[0]                    
tango[1]    う                
tango[2]    あ                
tango[3]    い                
                    
に入れ替えればいい。                    
アルゴリズムは最初に、                    
tango[n]→tango[0]                    
している。                    
                    
途中                    
tango[0]    う                
tango[1]    あ                
tango[2]    い                
tango[3]    う                
                    
あとは、tango[]の内容を一つ下に送ればいい。                    



                    
アルゴリズムでは、                    
ループ i:n-1,-1,0                    
(変数名:初期値、増分、終値)                    
とある。                    
                    
ここで、1個ずらしのことを図だけで(1個ずつ)考えるともどかしい。                    
(しかもステップを-1とし、後ろから回しているし・・・。)                    
                    
<もどかしく思う点>                    
途中の、図のn-1から考えるのだからtango[2]から考えればいいが、面倒。                    
(一つずつ考えると・・・)                    
tango[2]    「い」    を    tango[3]    に入れる。    
                    
(これを間違ってtango[3]から考えてしまうとよく分からなくなる。)                    
                    
<もう少し考えやすくする>                    
そこで、アルゴリズムをプログラムにする。                    
                    
結局、

                   
for i= n-1 to 0 step -1                    
 処理内容:「上の配列の単語を下の配列に入れる」                    
next i    

               
ということ。                    
                    
for文で、n-1とnを初期値として使っているが、                    
処理内容から考えて、nではなく、for文の変数iを使えば良さそう。                    
ということで、                    
ア TANGO[i]→TANGO[i+1]                    
になる。                    
ただ、注意しなくてはいけないのは、矢印の向き。                    
普通なら(VBAとか)、                    
TANGO[i+1]=TANGO[i]                    
となるのに、反対に書かれている。                    
                    
まったく簡単な内容なのに、試験だとややこしくなる。                    
いきなり、プログラムから書くくせになっているからだろうか・・・。