配列変数の中に適当に格納されている数値を最も大きな数値から順に配列変数に入れ替えるプログラムを実行してみよう。💖💖💖
ソーラー「今日のお題は
配列変数の中に格納されている数値のなかで最も大きな数値を表示するプログラムの仲間のプログラムである
配列変数の中に適当に格納されている数値を最も大きな数値から順に配列変数に入れ替えるプログラムを実行してみよう。
となっています。
アレサ「・・・??それはどのようなことが行われるプログラムになるのですの?」
ソーラー「例えば
配列宣言
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 つづく
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます