配列変数の中に適当に格納されている数値を最も大きな数値から順に配列変数に入れ替えるプログラムを実行してみよう。💖💖💖





ソーラー「今日のお題は


配列変数の中に格納されている数値のなかで最も大きな数値を表示するプログラムの仲間のプログラムである


配列変数の中に適当に格納されている数値を最も大きな数値から順に配列変数に入れ替えるプログラムを実行してみよう。


となっています。


アレサ「・・・??それはどのようなことが行われるプログラムになるのですの?」


ソーラー「例えば


配列宣言


int hairetu[5];

により


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]


が用意されていたとして


hairetu[0]に格納されている数値は0

hairetu[1]に格納されている数値は1

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は3

hairetu[4]に格納されている数値は4


と数値が代入されているとします


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]


に数値が代入されている状態の1例だね。


この状態から


hairetu[0]に格納されている数値は4

hairetu[1]に格納されている数値は3

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は1

hairetu[4]に格納されている数値は0



数値の大きな順に


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値を


入れ替えるプログラムなんだよ。」


アレサ「そんなことができるのですか?」


ソーラー「そうなんだよ。


では

配列宣言

int hairetu[5];

により

生成される

配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]


hairetu[0]に格納されている数値は0

hairetu[1]に格納されている数値は1

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は3

hairetu[4]に格納されている数値は4


と数値が代入されている状態から


hairetu[0]に格納されている数値は4

hairetu[1]に格納されている数値は3

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は1

hairetu[4]に格納されている数値は0


と数値が代入されている状態に入れ替えるプログラムを実行してみたいと思います


まず手始めに


次のプログラムをご用意いたしました(´▽`*)


ご覧ください」


#include <stdio.h>


int main(void) {


int hairetu[5];


hairetu[0] = 0;

hairetu[1] = 1;

hairetu[2] = 2;

hairetu[3] = 3;

hairetu[4] = 4;


int i;


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");

//🌞改行しています


int k;


for (k = 0; k< 4; k++) {


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


return 0;

}


ビルド実行結果


01234

10234(0の方が小さいので小さい方の値0と1の交換が行われています)

12034(0の方が小さいので小さい方の値0と2の交換が行われています)

12304(0の方が小さいので小さい方の値0と3の交換が行われています)

12340(0の方が小さいので小さい方の値0と4の交換が行われています)


ソーラー「このプログラムは


(kの値を

0,1,2,3と変えながら)


配列変数

hairetu[k]に格納されている数値が hairetu[k + 1]より同じか小さければ


hairetu[k]とhairetu[k + 1]に格納されている数値を交換するプログラムなんだよ。」


😊😊


配列変数

hairetu[k]とhairetu[k + 1]に格納されている数値を交換するプログラムについては


2つ前のエピソードをご覧ください


                            solarplexussより


                                 😊😊




ソーラー「



for (k = 0; k< 4; k++) {


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}



for (k = 0; k< 4; k++){}のブロック{}内の命令文

👇

if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");

👆


kの値を

0

1

2

3


と変化させながら


4回繰り返すプログラムなんだ


具体的には


k=0のとき


hairetu[0] <= hairetu[1]


なら


hairetu[0]と hairetu[1]に格納されている数値を交換し


そのときの


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値を


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


をつかって横に並べて表示し


次に


k=1のとき


hairetu[1] <= hairetu[2]


なら


hairetu[1]と hairetu[2]に格納されている数値を交換し


そのときの


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値を


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


をつかって横に並べて表示し


次に


k=2のとき


hairetu[2] <= hairetu[3]


なら


hairetu[2]と hairetu[3]に格納されている数値を交換し


そのときの


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値を


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


をつかって横に並べて表示し


次に


k=3のとき


hairetu[3] <= hairetu[4]


なら


hairetu[3]と hairetu[4]に格納されている数値を交換し


そのときの


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値を


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


をつかって横に並べて表示するというものなんだ



まず


このプログラムでは


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

数値

0

1

2

3

4

が代入されています。


そして


int k;


for (k = 0; k< 4; k++) {


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


の実行だね


if (hairetu[k] <= hairetu[k + 1])に注目だね



まず


k=0のとき


if (hairetu[k] <= hairetu[k + 1])



if (hairetu[0] <= hairetu[1])


となるね



hairetu[0]に格納されている数値0

hairetu[1]に格納されている数値1


より


小さいので


hairetu[0] <= hairetu[1]


が成立し


int a;


a = hairetu[0];


hairetu[0] = hairetu[1];


hairetu[1] = a;


が実行されることになるよね


ですので


hairetu[0]に格納されている数値0

hairetu[1]に格納されている数値1


が交換されて


hairetu[0]に格納されている数値が1

hairetu[1]に格納されている数値が0


になり


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値

1

0

2

3

4

になります


そして


配列変数hairetu[0]に格納されている数値

配列変数hairetu[1]に格納されている数値

配列変数hairetu[2]に格納されている数値

配列変数hairetu[3]に格納されている数値

配列変数hairetu[4]に格納されている数値


を横に並べて表示する命令文


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


が実行されることにより


10234


が表示されています。



ビルド実行結果のこの部分

👇

01234

10234


をみても


hairetu[0]に格納されている数値0

hairetu[1]に格納されている数値1


が交換されて


hairetu[0]に格納されている数値が1

hairetu[1]に格納されている数値が0


になっているのがわかります。


次に


k=1のとき


hairetu[1]に格納されている数値0

hairetu[2]に格納されている数値2


より


小さいので


hairetu[1] <= hairetu[2]


が成立し


int a;


a = hairetu[1];


hairetu[1] = hairetu[2];


hairetu[2] = a;


が実行されることになるよね


ですので


hairetu[1]に格納されている数値0

hairetu[2]に格納されている数値2


が交換されて


hairetu[1]に格納されている数値が2

hairetu[2]に格納されている数値が0


になります


そして


配列変数hairetu[0]に格納されている数値

配列変数hairetu[1]に格納されている数値

配列変数hairetu[2]に格納されている数値

配列変数hairetu[3]に格納されている数値

配列変数hairetu[4]に格納されている数値


を横に並べて表示する命令文


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


が実行されることにより


12034


が表示されます。



ビルド実行結果のこの部分

👇

01234

10234👈

12034👈


をみても


hairetu[1]に格納されている数値0

hairetu[2]に格納されている数値2


が交換されて


hairetu[1]に格納されている数値が2

hairetu[2]に格納されている数値が0


になっているのがわかります。



次に


k=2のとき


hairetu[2]に格納されている数値0

hairetu[3]に格納されている数値3


より


小さいので


hairetu[2] <= hairetu[3]


が成立し


int a;


a = hairetu[2];


hairetu[2] = hairetu[3];


hairetu[3] = a;


が実行されることになるよね


ですので


hairetu[2]に格納されている数値0

hairetu[3]に格納されている数値3


が交換されて



hairetu[2]に格納されている数値は3

hairetu[3]に格納されている数値は0


になります


そして


配列変数hairetu[0]に格納されている数値

配列変数hairetu[1]に格納されている数値

配列変数hairetu[2]に格納されている数値

配列変数hairetu[3]に格納されている数値

配列変数hairetu[4]に格納されている数値


を横に並べて表示する命令文


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


が実行されることにより


12304


が表示されます。



ビルド実行結果のこの部分

👇

01234

10234

12034👈

12304👈

をみても


hairetu[2]に格納されている数値0

hairetu[3]に格納されている数値3


が交換されて


hairetu[2]に格納されている数値が3

hairetu[3]に格納されている数値が0


になっているのがわかります。



次に


k=3のとき



hairetu[3]に格納されている数値0

hairetu[4]に格納されている数値4


より


小さいので


hairetu[3] <= hairetu[4]


が成立し


int a;


a = hairetu[3];


hairetu[3] = hairetu[4];


hairetu[4] = a;


が実行されることになるよね


ですので


hairetu[3]に格納されている数値0

hairetu[4]に格納されている数値4


が交換されて



hairetu[3]に格納されている数値が4

hairetu[4]に格納されている数値が0


になります


そして


配列変数hairetu[0]に格納されている数値

配列変数hairetu[1]に格納されている数値

配列変数hairetu[2]に格納されている数値

配列変数hairetu[3]に格納されている数値

配列変数hairetu[4]に格納されている数値


を横に並べて表示する命令文


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


が実行されることにより


12340


が表示されます。


ビルド実行結果のこの部分

👇

01234

10234

12034

12304👈

12340👈

をみても


hairetu[3]に格納されている数値0

hairetu[4]に格納されている数値4


が交換されて


hairetu[3]に格納されている数値は4

hairetu[4]に格納されている数値は0



になっているのがわかります。


お話をまとめると


このようにして


このプログラム

👇

#include <stdio.h>


int main(void) {


int hairetu[5];


hairetu[0] = 0;

hairetu[1] = 1;

hairetu[2] = 2;

hairetu[3] = 3;

hairetu[4] = 4;


int i;


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");

//🌞改行しています


int k;


for (k = 0; k< 4; k++) {


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


return 0;

}


ビルド実行結果


01234

10234

12034

12304

12340


👆


を実行することにより


4回数値交換が行われて


1番小さな数値0を1番右端に移動させて表示することができました


👇

01234

10234

12034

12304

12340👈1番小さな数値0が右端に来ました

👆



このとき

配列変数

hairetu[0] 😊

hairetu[1] 😊

hairetu[2] 😊

hairetu[3] 😊

hairetu[4] 😊

に格納されている数値は


0

1

2

3

4

から

1

2

3

4

0

になっています。


少し変化したね(´▽`*)」


🐤    🐤    🐤

このとき


ビルド実行結果


をみていただけてもおわかりになられますように


最初


配列変数

hairetu[0]

に格納されている数値データ0は


徐々に徐々に

次の配列変数へ移動して(入れ替わって)います


つまり


配列変数

hairetu[0]

から


配列変数

hairetu[1]

に移動し(入れ替わり)


配列変数

hairetu[2]

に移動し(入れ替わり)


配列変数

hairetu[3]

に移動し(入れ替わり)


配列変数

hairetu[4]

に移動しています(入れ替わっています)



ビルド実行結果


01234

10234

12034

12304

12340


をみると


0が

右端まで


まるで


泡が水面に浮かび上がるように徐々に移動しているようにもみえます



このように


まるで泡(bubble)が水面に浮かび上がるように


徐々に


隣の配列変数へ


データを入れ替えていく方法を



            .。o○バブルソート○o。.


              bubble sort(整列、入れ替え、分類)


といいます



以下


weblio英和辞典より


I sorted the name cards into alphabetical order.

私は名刺をアルファベット順に分類した

Glass bottles for recycling should be sorted into separate colors.

再生用ガラスびんは色の違いに合わせて仕分けしなくてはならない

🐤    🐤    🐤



ソーラー「


            😊ここで😊



配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値が


1

2

3

4

0

と格納されている


この状態で


今、行われたのと同じプログラム


#include <stdio.h>


int main(void) {


int hairetu[5];


hairetu[0] = 1;//🌞配列変数に格納された数値が0から1になっています

hairetu[1] = 2;//🌞配列変数に格納された数値が1から2になっています

hairetu[2] = 3;//🌞配列変数に格納された数値が2から3になっています

hairetu[3] = 4;//🌞配列変数に格納された数値が3から4になっています

hairetu[4] = 0;//🌞配列変数に格納された数値が4から0になっています


int i;


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");

//🌞改行しています


int k;


for (k = 0; k< 4; k++) {



if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


return 0;

}

を実行すると


ビルド実行結果は


さて さて


どのように表示されるかな?😊」



#include <stdio.h>


int main(void) {


int hairetu[5];


hairetu[0] = 1;

hairetu[1] = 2;

hairetu[2] = 3;

hairetu[3] = 4;

hairetu[4] = 0;


int i;


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");

//🌞改行しています


int k;


for (k = 0; k< 4; k++) {



if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


return 0;

}

ビルド実行結果


12340

21340

23140

23410

23410


ソーラー「


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値が


1

2

3

4

0

と格納されている状態で



2回目の


kの値を


0,1,2,3と変えながら


”hairetu[k]に格納されている数値が hairetu[k + 1]より小さければ


hairetu[k]とhairetu[k + 1]に格納されている数値を交換するプログラム”


が実行されています。


まず


このプログラムでは


k=0のとき


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}



kに0が代入された


if (hairetu[0] <= hairetu[1]) {


int a;


a = hairetu[0];


hairetu[0] = hairetu[1];


hairetu[1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


が実行されることになります





hairetu[0]に格納されている数値1

hairetu[1]に格納されている数値2


より


小さいので


if (hairetu[0] <= hairetu[1])


hairetu[0]<=hairetu[1]


が成立し


hairetu[0]に格納されている数値1

hairetu[1]に格納されている数値2


が交換されて


hairetu[0]に格納されている数値が2

hairetu[1]に格納されている数値が1


になっているのが


ビルド実行結果のこの部分

👇

12340👈

21340👈

23140

23410

23410

をみてもわかります。


次に


k=1のとき


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}



kに1が代入された


if (hairetu[1] <= hairetu[2]) {


int a;


a = hairetu[1];


hairetu[1] = hairetu[2];


hairetu[2] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


が実行されることになります



hairetu[1]に格納されている数値1

hairetu[2]に格納されている数値3


となっています


hairetu[1]に格納されている数値1

hairetu[2]に格納されている数値3


より


小さいので


if (hairetu[1] <= hairetu[2])


hairetu[1]<=hairetu[2]


が成立し


hairetu[1]に格納されている数値1

hairetu[2]に格納されている数値3


が交換されて


hairetu[1]に格納されている数値が3

hairetu[2]に格納されている数値が1


になっているのが


ビルド実行結果のこの部分

👇

12340

21340👈

23140👈

23410

23410


をみてもわかります。


次に


k=2のとき


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}



kに2が代入された


if (hairetu[2] <= hairetu[3]) {


int a;


a = hairetu[2];


hairetu[2] = hairetu[3];


hairetu[3] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


が実行されることになります





hairetu[2]に格納されている数値1

hairetu[3]に格納されている数値4


より


小さいことにより


if (hairetu[2] <= hairetu[3])


hairetu[2]<=hairetu[3]


が成立し


hairetu[2]に格納されている数値1

hairetu[3]に格納されている数値4


が交換されて


hairetu[2]に格納されている数値が4

hairetu[3]に格納されている数値が1


になっているのが


ビルド実行結果のこの部分

👇

12340

21340

23140👈

23410👈

23410

をみてもわかります。


このとき


配列変数

hairetu[0]に格納されている数値は2

hairetu[1]に格納されている数値は3

hairetu[2]に格納されている数値は4

hairetu[3]に格納されている数値は1

hairetu[4]に格納されている数値は0


となっています


次に


k=3のとき


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}



kに3が代入された


if (hairetu[3] <= hairetu[4]) {


int a;


a = hairetu[3];


hairetu[3] = hairetu[4];


hairetu[3] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


が実行されることになる・・・のですが




hairetu[3]に格納されている数値1

hairetu[4]に格納されている数値0


を比較してみると


hairetu[3]に格納されている数値1

hairetu[4]に格納されている数値0


より小さくないので


if (hairetu[3] <= hairetu[4])



hairetu[3]<=hairetu[4]は成立せず


if (hairetu[3] <= hairetu[4]){}のブロック{}内の命令文

👇



int a;


a = hairetu[3];


hairetu[3] = hairetu[4];


hairetu[3] = a;

}




は実行されないので



hairetu[3]に格納されている数値1

hairetu[4]に格納されている数値0


は交換されません。


ですので


配列変数

hairetu[0]に格納されている数値は2

hairetu[1]に格納されている数値は3

hairetu[2]に格納されている数値は4

hairetu[3]に格納されている数値は1

hairetu[4]に格納されている数値は0


のまま変化しないことが


続く


配列変数hairetu[0]に格納されている数値

配列変数hairetu[1]に格納されている数値

配列変数hairetu[2]に格納されている数値

配列変数hairetu[3]に格納されている数値

配列変数hairetu[4]に格納されている数値


を並べて表示する命令文


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


の実行結果をみてもわかります


ビルド実行結果は


12340

21340

23140

23410👈

23410👈


となっていますね。


確かに


配列変数

hairetu[0]に格納されている数値は2

hairetu[1]に格納されている数値は3

hairetu[2]に格納されている数値は4

hairetu[3]に格納されている数値は1

hairetu[4]に格納されている数値は0


のまま変化していませんね。


先ほどのプログラムでは


1番小さな数値0を


1番右端に移動させることができましたが




今度のプログラムでは


0につづいて


2番目に小さな数値1を


右端から2番目に


移動させて表示することができました


このとき

配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値は


2

3

4

1

0

になっています。


う~ん


まだまだかな(( ̄ー ̄)ニヤリ)


この


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値が


2

3

4

1

0

の状態で


今と同じプログラム


つまり


3回目の


kの値を


0,1,2,3と変えながら


”hairetu[k]に格納されている数値が hairetu[k + 1]より小さければ


hairetu[k]とhairetu[k + 1]に格納されている数値を交換するプログラム”


を実行すると


ビルド実行結果は


どのように表示されるかな?😊」



#include <stdio.h>


int main(void) {


int hairetu[5];


hairetu[0] = 2;//👈hairetu[0]に格納されている数値が2になっています

hairetu[1] = 3;//👈hairetu[1] に格納されている数値が3になっています

hairetu[2] = 4;//👈hairetu[2]に格納されている数値が4になっています

hairetu[3] = 1;//👈hairetu[3]に格納されている数値が1になっています

hairetu[4] = 0;//👈hairetu[4]に格納されている数値が0になっています


/*配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

2

3

4

1

0

が代入されています。*/


int i;


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");

//🌞改行しています


int k;


for (k = 0; k< 4; k++) {



if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


return 0;

}


ビルド実行結果


23410

32410

34210

34210

34210


ソーラー「3回目の


kの値を


0,1,2,3と変えながら


hairetu[k]に格納されている数値が hairetu[k + 1]より小さければ


hairetu[k]とhairetu[k + 1]に格納されている数値を交換するプログラムが実行されています


まず


このプログラムでは


k=0のとき


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


のkに0が代入された


if (hairetu[0] <= hairetu[1]) {


int a;


a = hairetu[0];


hairetu[0] = hairetu[1];


hairetu[1] = a;

}


が実行されることになります




if (hairetu[k] <= hairetu[k + 1])



if (hairetu[0] <= hairetu[1])


を表すことになります


hairetu[0]に格納されている数値2

hairetu[1]に格納されている数値3


より


小さいので


hairetu[0]<=hairetu[1]


が成立し


if (hairetu[0] <= hairetu[1])に続くブロック内 {}の命令文


int a;


a = hairetu[0];


hairetu[0] = hairetu[1];


hairetu[1] = a;


が実行されることになります


hairetu[0]に格納されている数値2

hairetu[1]に格納されている数値3


が交換されて


hairetu[0]に格納されている数値が3

hairetu[1]に格納されている数値が2


になっているのが


ビルド実行結果のこの部分

👇

23410👈

32410👈

34210

34210

34210


をみてもわかります。


次に


k=1のとき


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}



kに1が代入された


if (hairetu[1] <= hairetu[2]) {


int a;


a = hairetu[1];


hairetu[1] = hairetu[2];


hairetu[1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


が実行されることになります




if (hairetu[k] <= hairetu[k + 1])



if (hairetu[1] <= hairetu[2])


を表すことになります



hairetu[1]に格納されている数値2

hairetu[2]に格納されている数値4


より


小さいので


hairetu[1]<=hairetu[2]


が成立し


if (hairetu[1] <= hairetu[2])に続くブロック{}内の命令文

👇

int a;


a = hairetu[1];


hairetu[1] = hairetu[2];


hairetu[1] = a;



が実行されることになります


hairetu[1]に格納されている数値2

hairetu[2]に格納されている数値4


が交換されて


hairetu[1]に格納されている数値が4

hairetu[2]に格納されている数値が2


になっているのが


ビルド実行結果のこの部分

👇

23410

32410👈

34210👈

34210

34210

をみてもわかります。


このとき


配列変数

hairetu[0]に格納されている数値は3

hairetu[1]に格納されている数値は4

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は1

hairetu[4]に格納されている数値は0


となっています


次に


k=2のとき


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}



kに2が代入された


if (hairetu[2] <= hairetu[3]) {


int a;


a = hairetu[2];


hairetu[2] = hairetu[3];


hairetu[2] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


が実行されることになります



if (hairetu[k] <= hairetu[k + 1])



if (hairetu[2] <= hairetu[3])


を表すことになります


ですので


if (hairetu[2] <= hairetu[3])に続くブロック{}内の命令文

👇

int a;


a = hairetu[2];


hairetu[2] = hairetu[3];


hairetu[2] = a;

👆

が実行されることになりそうですが・・・


hairetu[2]に格納されている数値2

hairetu[3]に格納されている数値1


を比較してみると


hairetu[2]に格納されている数値2

hairetu[3]に格納されている数値1


より小さくないので


hairetu[2]<=hairetu[3]


が成立せず


hairetu[2]に格納されている数値2

hairetu[3]に格納されている数値1


は交換されません。


ですので


配列変数hairetu[0]に格納されている数値は3

配列変数hairetu[1]に格納されている数値は4

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は1

配列変数hairetu[4]に格納されている数値は0


のまま変化しないことが


続いて実行される


配列変数hairetu[0]に格納されている数値

配列変数hairetu[1]に格納されている数値

配列変数hairetu[2]に格納されている数値

配列変数hairetu[3]に格納されている数値

配列変数hairetu[4]に格納されている数値


を並べて表示する命令文


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


の実行結果をみてもわかります


ビルド実行結果は


23410

32410

34210👈

34210👈

34210

となっていて


配列変数hairetu[0]

配列変数hairetu[1]

配列変数hairetu[2]

配列変数hairetu[3]

配列変数hairetu[4]


に格納されている数値は変化していませんね


このとき


配列変数hairetu[0]に格納されている数値は3

配列変数hairetu[1]に格納されている数値は4

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は1

配列変数hairetu[4]に格納されている数値は0


となっています


次に


k=3のとき


if (hairetu[k] <= hairetu[k + 1])



if (hairetu[3] <= hairetu[4])


を表すことになります



hairetu[3]に格納されている数値2

hairetu[4]に格納されている数値1


を比較してみると


hairetu[3]に格納されている数値2

hairetu[4]に格納されている数値1


より小さくないので


hairetu[3]に格納されている数値2

hairetu[4]に格納されている数値1


は交換されません。



配列変数hairetu[0]に格納されている数値は3

配列変数hairetu[1]に格納されている数値は4

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は1

配列変数hairetu[4]に格納されている数値は0


のまま変化しないことが


続いて実行される


配列変数hairetu[0]に格納されている数値

配列変数hairetu[1]に格納されている数値

配列変数hairetu[2]に格納されている数値

配列変数hairetu[3]に格納されている数値

配列変数hairetu[4]に格納されている数値


を並べて表示する命令文


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


の実行結果をみてもわかります


ビルド実行結果は


23410

32410

34210

34210👈

34210👈


となっていますね


配列変数hairetu[0]

配列変数hairetu[1]

配列変数hairetu[2]

配列変数hairetu[3]

配列変数hairetu[4]


に格納されている数値は


3

4

2

1

0


のまま変化していないことがわかります


kの値を


0,1,2,3と変えながら


hairetu[k]に格納されている数値が hairetu[k + 1]より小さければ


hairetu[k]とhairetu[k + 1]に格納されている数値を交換するプログラムを



             🌞3回も🌞



実行してきましたが



1回目のプログラムの実行では


01234

から

12340


のように


1番小さな数値0を1番右端に移動させることができました。


そののち


2回目のプログラムの実行では


12340

から

23410


のように


2番目に小さな数値1を


0の左隣の


右端から2番目に移動させることができました。


そののち


3回目のプログラムの実行では


23410

から

34210


のように


3番目に小さな数値2を


1の左隣の


右端から3番目に


移動させて

表示することができました


このとき

配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値は


3

4

2

1

0

になっています。


ふふっ


おやおや~?


だんだん


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]


大きな数値から順に数値が格納されだしているとおもいませんか?


きのせいかな?


ふふっ


さて


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

3

4

2

1

0

が格納されている


この状態から


今までと同じプログラムである


kの値を


0,1,2,3と変えながら


hairetu[k]に格納されている数値が hairetu[k + 1]より小さければ


hairetu[k]とhairetu[k + 1]に格納されている数値を交換するプログラム


を実行してみます。


ビルド実行結果は


どのように表示されるかな?😊」



#include <stdio.h>


int main(void) {


int hairetu[5];


hairetu[0] = 3;//👈hairetu[0]に格納されている数値が3になっています

hairetu[1] = 4;//👈hairetu[1] に格納されている数値が4になっています

hairetu[2] = 2;//👈hairetu[2]に格納されている数値が2になっています

hairetu[3] = 1;//👈hairetu[3]に格納されている数値が1になっています

hairetu[4] = 0;//👈hairetu[4]に格納されている数値が0になっています

/*配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に数値

3

4

2

1

0

が代入されています*/



int i;


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");

//🌞改行しています


int k;


for (k = 0; k< 4; k++) {


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


printf("\n");


}


return 0;

}


ビルド実行結果


34210

43210

43210

43210

43210



ソーラー「4回目の


kの値を


0,1,2,3と変えながら


hairetu[k]に格納されている数値が hairetu[k + 1]より小さければ


hairetu[k]とhairetu[k + 1]に格納されている数値を交換するプログラムが実行されています



まず


このプログラムでは


k=0のとき


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


のkに0が代入された


if (hairetu[0] <= hairetu[1]) {


int a;


a = hairetu[0];


hairetu[0] = hairetu[1];


hairetu[1] = a;

}


が実行されることになります



if (hairetu[k] <= hairetu[k + 1])



if (hairetu[0] <= hairetu[1])


を表すことになります


hairetu[0]に格納されている数値3

hairetu[1]に格納されている数値4


より


小さいので


hairetu[0]<=hairetu[1]


が成立し


if (hairetu[0] <= hairetu[1])につづくブロック{}内の命令文

👇

int a;


a = hairetu[0];


hairetu[0] = hairetu[1];


hairetu[1] = a;

👆


が実行されることになります


ですので


hairetu[0]に格納されている数値3

hairetu[1]に格納されている数値4


が交換されて


hairetu[0]に格納されている数値が4

hairetu[1]に格納されている数値が3


になっているのが


ビルド実行結果のこの部分

👇

34210👈

43210👈

43210

43210

43210

をみてもわかります。


____________________________________________________

この時点で


配列変数

hairetu[0]に格納されている数値は4

hairetu[1]に格納されている数値が3

hairetu[2]に格納されている数値が2

hairetu[3]に格納されている数値が1

hairetu[4]に格納されている数値が0

なっています。


4回


kの値を


0,1,2,3と変えながら


"hairetu[k]に格納されている数値が hairetu[k + 1]より小さければ


hairetu[k]とhairetu[k + 1]に格納されている数値を交換するプログラム"


を実行することにより


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]


配列変数hairetu[0]に格納されている数値は0

配列変数hairetu[1]に格納されている数値は1

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は3

配列変数hairetu[4]に格納されている数値は4


と数値が格納されている状態から


配列変数hairetu[0]に格納されている数値は4

配列変数hairetu[1]に格納されている数値は3

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は1

配列変数hairetu[4]に格納されている数値は0


と数値が格納されている状態へ


数値の大きな順に


配列変数に格納されている数値を入れ替えることができました。

____________________________________________________



ソーラー「おおっと


まだ


k=0,1,2,3と数値を変えていく中の


k=0


の段階で


配列変数hairetu[0]に格納されている数値は4

配列変数hairetu[1]に格納されている数値は3

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は1

配列変数hairetu[4]に格納されている数値は0


になったね



k=1のとき


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


のkに1が代入された


if (hairetu[1] <= hairetu[2]) {


int a;


a = hairetu[1];


hairetu[1] = hairetu[2];


hairetu[2] = a;

}


が実行されることになりそうですが・・・



if (hairetu[k] <= hairetu[k + 1])



if (hairetu[1] <= hairetu[2])


を表すことになります


hairetu[1]に格納されている数値3

hairetu[2]に格納されている数値2


より


大きいので


hairetu[1]<=hairetu[2]


は成立しないので


if (hairetu[1] <= hairetu[2])に続くブロック{}内の命令文

👇

int a;


a = hairetu[1];


hairetu[1] = hairetu[2];


hairetu[2] = a;

👆

が実行されることはありません



hairetu[1]に格納されている数値3

hairetu[2]に格納されている数値2


が交換されることはありません


k=2のとき


if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


のkに2が代入された


if (hairetu[2] <= hairetu[3]) {


int a;


a = hairetu[2];


hairetu[2] = hairetu[3];


hairetu[3] = a;

}


が実行されることになりそうですが・・・



if (hairetu[k] <= hairetu[k + 1])



if (hairetu[2] <= hairetu[3])


を表すことになります


hairetu[2]に格納されている数値2

hairetu[3]に格納されている数値1


より


大きいので


hairetu[2]<=hairetu[3]


は成立しないので


if (hairetu[2] <= hairetu[3])に続くブロック{}内の命令文

👇

int a;


a = hairetu[2];


hairetu[2] = hairetu[3];


hairetu[3] = a;

👆

が実行されることはありません


ですので


hairetu[2]に格納されている数値2

hairetu[3]に格納されている数値1


が交換されることはありません


次に


k=3のとき



if (hairetu[k] <= hairetu[k + 1]) {


int a;


a = hairetu[k];


hairetu[k] = hairetu[k + 1];


hairetu[k + 1] = a;

}


のkに3が代入された


if (hairetu[3] <= hairetu[4]) {


int a;


a = hairetu[3];


hairetu[3] = hairetu[4];


hairetu[4] = a;

}


が実行されることになりそうですが・・・



if (hairetu[k] <= hairetu[k + 1])



if (hairetu[3] <= hairetu[4])


を表すことになります


hairetu[3]に格納されている数値3

hairetu[4]に格納されている数値1


より


大きいので


hairetu[3]<=hairetu[4]


は成立しないので


if (hairetu[3] <= hairetu[4])に続くブロック{}内の命令文

👇

int a;


a = hairetu[3];


hairetu[3] = hairetu[4];


hairetu[4] = a;

👆

が実行されることはありません



hairetu[3]に格納されている数値2

hairetu[4]に格納されている数値1


が交換されることはありません



k=1

k=2

k=3


の場合は


配列変数hairetu[0]に格納されている数値は4

配列変数hairetu[1]に格納されている数値は3

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は1

配列変数hairetu[4]に格納されている数値は0


のままです


配列変数hairetu[0]に格納されている数値は4

配列変数hairetu[1]に格納されている数値は3

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は1

配列変数hairetu[4]に格納されている数値は0


にするということと


1番小さな数値0を1番右端に

移動させて

つづいて

2番目に小さな数値1を右端から2番目に

移動させて

つづいて

3番目に小さな数値2を右端から3番目に

移動させて

つづいて

4番目に小さな数値3を右端から4番目に

移動させて

つづいて

5番目に小さな数値4を右端から5番目に

移動させて


表示するということは対応しています


言い換えると


1番大きな数値4を1番左端に

移動させて

つづいて

2番目に大きな数値3を左端から2番目に

移動させて

つづいて

3番目に大きな数値2を左端から3番目に

移動させて

つづいて

4番目に大きな数値1を左端から4番目に

移動させて

つづいて

5番目に大きな数値0を左端から5番目に

移動させて


表示するということに対応しています



とりあえず


               4回


kの値を0,1,2,3と変えながら


hairetu[k]に格納されている数値が hairetu[k + 1]より小さければ


hairetu[k]とhairetu[k + 1]に格納されている数値を交換するプログラム


を実行することにより



最初の目的だった

               

配列変数


hairetu[0]に格納されている数値は0

hairetu[1]に格納されている数値は1

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は3

hairetu[4]に格納されている数値は4


と数値が代入されている状態を


hairetu[0]に格納されている数値は4

hairetu[1]に格納されている数値は3

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は1

hairetu[4]に格納されている数値は0


と数値が格納されている状態に


を変更することができました



ぶっちゃけ




          何も考えなくても



             このようにひたすら😊😊😊😊😊


kの値を


0,1,2,3


と変えながら



hairetu[k] hairetu[k + 1]


hairetu[k]hairetu[k + 1]



              やがて


          (*´▽`*)いつかは(*^▽^*)


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]


hairetu[0]に格納されている数値は0

hairetu[1]に格納されている数値は1

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は3

hairetu[4]に格納されている数値は4


と数値が格納されている状態から


            そう



          いつかは😊😊😊


hairetu[0]に格納されている数値は4

hairetu[1]に格納されている数値は3

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は1

hairetu[4]に格納されている数値は0



大きいほうの数値から配列変数に順に数値が格納されている状態に変更することができます


もちろん


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]


hairetu[0]に格納されている数値は0

hairetu[1]に格納されている数値は1

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は3

hairetu[4]に格納されている数値は4


と数値が格納されていない状態


例えば


hairetu[0]に格納されている数値は1

hairetu[1]に格納されている数値は3

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は4

hairetu[4]に格納されている数値は0


のように数値が格納されている状態でも




kの値を0,1,2,3と変えながら



hairetu[k] hairetu[k + 1]


hairetu[k]hairetu[k + 1]




          いつかは😊😊😊


hairetu[0]に格納されている数値は4

hairetu[1]に格納されている数値は3

hairetu[2]に格納されている数値は2

hairetu[3]に格納されている数値は1

hairetu[4]に格納されている数値は0



大きいほうの数値から配列変数に順に数値が格納されている状態に変更することができます












                        お・し・ま・い💖」




ソーラー「正しいフォーム(🌞心の在り方🌞)で


ひたすら動作(努力,練習の積み重ね)を実行していけば


いつかは目標が達成されるんだ・・・


例え何が実行されているかわかりにくくても・・・


なんだか・・・人生の縮図を感じたよ・・・


アレサ・・・」



アレサ「そうなんですの( ^ω^)・・・😊」



ソーラー「ああ、よかった よかった


帰ろっか アレサ」



アレサ「はい、ソーラーさん😊」



スタコラサッサ~~~~~~


       

 🌹🌺🌹🌺🌹🌺🌹🌺🌹🌺🌹🌺🌹



solarplexuss「あのぉ~




ああっ・・・・・・なんか


微妙なところで行ってしまった~


けど


満足、満足したぁ



何はともあれ


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]



配列変数hairetu[0]に格納されている数値は0

配列変数hairetu[1]に格納されている数値は1

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は3

配列変数hairetu[4]に格納されている数値は4

と数値が代入されている状態から


大きな数値から順に


配列変数hairetu[0]に格納されている数値は4

配列変数hairetu[1]に格納されている数値は3

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は1

配列変数hairetu[4]に格納されている数値は0


と数値が格納されている状態に


変更することができました


配列変数hairetu[0]に格納されている数値は4

配列変数hairetu[1]に格納されている数値は3

配列変数hairetu[2]に格納されている数値は2

配列変数hairetu[3]に格納されている数値は1

配列変数hairetu[4]に格納されている数値は0


と数値が格納されている状態で


配列変数hairetu[0]に格納されている数値

配列変数hairetu[1]に格納されている数値

配列変数hairetu[2]に格納されている数値

配列変数hairetu[3]に格納されている数値

配列変数hairetu[4]に格納されている数値


を並べて横に表示する命令文


for (i = 0; i< 5; i++) {


printf("%d", hairetu[i]);

}


を実行すれば


大きな数値から順に


43210


が表示されるというわけです


ところで


この


配列変数に適当に格納されている数値を


大きな数値から順に


配列変数にいれかえて


大きな数値から順に


数値を表示するプログラムは


どのようなときにもちいられるとおもいますか?



例えば


皆さんがインターネットで


スマホを購入する際


サイトには


発売日が古い順から


20170110発売のスマホの画像データ

20170808発売のスマホの画像データ

20171120発売のスマホの画像データ

20180222発売のスマホの画像データ

20181010発売のスマホの画像データ

20181220発売のスマホの画像データ

20190120発売のスマホの画像データ

20190227発売のスマホの画像データ


ならんでいるとします


ですが


新しく発売されたスマホからチェックしてみたいので


発売日が


新しいものから順に


スマホの画像データを


サイトに表示させたいとします


たいてい


検索エンジンには


発売日の新しい順

値段の高い順

値段の安い順

など・・・

の項目が設定されていますね


そのとき


発売日の新しい順


で検索すると


発売日の新しい順



20190227のスマホの画像データ

20190120のスマホの画像データ

20181220のスマホの画像データ

20181010のスマホの画像データ

20180222のスマホの画像データ

20171120のスマホの画像データ

20170808のスマホの画像データ

20170110のスマホの画像データ

のように


スマホの画像データが


並び変えて


表示されるはずです


このとき


このエピソードで学んだプログラムが使用されています


どういうこと~


ってなる?なるぅ?


20170110発売のスマホの画像データ

20170808発売のスマホの画像データ

20171120発売のスマホの画像データ

20180222発売のスマホの画像データ

20181010発売のスマホの画像データ

20181220発売のスマホの画像データ

20190120発売のスマホの画像データ

20190227発売のスマホの画像データ

についている


20170110

20170808

20171120

20180222

20181010

20181220

20190120

20190227

の番号は


20170110発売のスマホの画像データ

20170808発売のスマホの画像データ

20171120発売のスマホの画像データ

20180222発売のスマホの画像データ

20181010発売のスマホの画像データ

20181220発売のスマホの画像データ

20190120発売のスマホの画像データ

20190227発売のスマホの画像データ

呼び出すことができるように設定、関連付けされています


まるで


アスキーコードとそのアスキーコードに対応する文字の画像データのような


関係ですね。



そのように設定されているとどのような利点があるのでしょうか?




例えば


ふつうに


20170110

20170808

20171120

20180222

20181010

20181220

20190120

20190227

のように

発売日の古い順番で

配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

hairetu[5]

hairetu[6]

hairetu[7]

hairetu[8]

数値データが

格納されていると


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

hairetu[5]

hairetu[6]

hairetu[7]

hairetu[8]

とfor文を用いて


簡単に


一挙に


発売日の古い順から


20170110発売のスマホの画像データ

20170808発売のスマホの画像データ

20171120発売のスマホの画像データ

20180222発売のスマホの画像データ

20181010発売のスマホの画像データ

20181220発売のスマホの画像データ

20190120発売のスマホの画像データ

20190227発売のスマホの画像データ

表示することができます


このことは普通のことですが


普通のことかな?


これでも


配列の仕組みはすごいです


配列を使わなければ


発売日に対応するスマホの画像データを


1つずつ表示するプログラムを


記述しなければなくなります


さらにすごいことに


このときユーザーが


発売日の新しい順


で検索したとします


このとき


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

hairetu[5]

hairetu[6]

hairetu[7]

hairetu[8]

には


発売日の古い順に


20170110

20170808

20171120

20180222

20181010

20181220

20190120

20190227

のように

発売日の古い順番でデータが代入されていますが



発売日の新しい順


つまり


大きな数値から順に


20190227

20190120

20181220

20181010

20180222

20171120

20170808

20170110


数値が入れ替えて格納されるプログラムが実行されることになります


つまり


大きな値から順に


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

hairetu[5]

hairetu[6]

hairetu[7]

hairetu[8]


データが代入されることになります


このとき


このエピソードで学んだプログラムのシステムが用いられています


そして


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

hairetu[5]

hairetu[6]

hairetu[7]

hairetu[8]

とfor文を用いて


発売日の新しい順に


簡単に


一挙に


20190227のスマホの画像データ

20190120のスマホの画像データ

20181220のスマホの画像データ

20181010のスマホの画像データ

20180222のスマホの画像データ

20171120のスマホの画像データ

20170808のスマホの画像データ

20170110のスマホの画像データ

が表示されるというわけですね


めでたし めでたし😊/」


👇













👇















👇














👇












🌹🌺🌹🌺🌹🌺🌹🌺🌹🌺🌹🌺🌹🌹🌺🌹🌺🌹🌺🌹🌺🌹🌺🌹🌺🌹


ソーラー「いらっしゃい


さあ



ここからが本番だよ



                 to be continued  つづく


  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る