N88-BASIC、Cで初心者向けプログラミング (4回目)
2022/2/6(日)
DIM A(10)で
A(0)~A(10)の変数が作られます
I = 5ならA(I)はA(5)になります
DIMを省略してA(0)などを使用すると
DIM A(10)とした時と同じになります
DIM B(2, 1)は
B(0, 0) B(1, 0) B(2, 0)
B(0, 1) B(1, 1) B(2, 1)
が作られます
"で囲まれた文字の列を文字列といい、
最後に$を付ければ文字変数になります
A$ = "abc"
B$ = A$ + "efg"
PRINT B$
でabcdefと表示されます
文字列の長さは0~255文字までです
int a[10];で
a[0]~a[9]の変数が作られます
i = 5ならa[i]はa[5]になります
int b[3][2]は
b[0][0] b[0][1]
b[1][0] b[1][1]
b[2][0] b[2][1]
が作られます
char b;でbは文字変数になります
b = 'a';文字は'で囲みます
char a[10];で9文字の文字列に
なります
char d[] = "abc";
は、宣言時のみ代入可能で、
a = "abc"などはエラーになります
char d[4];
d[0] = 'a';
d[1] = 'b';
d[2] = 'c';
d[3] = '\0';
と同じです
'\0'は文字コード0で、文字列の
最後を意味します
255より多い文字数も可能です
月以外の数値の入力で終了する
100 DIM M$(11)
110 M$(0) = "January": M$( 1) = "February": M$( 2) = "March"
120 M$(3) = "April" : M$( 4) = "May" : M$( 5) = "June"
130 M$(6) = "July" : M$( 7) = "August" : M$( 8) = "September"
140 M$(9) = "October": M$(10) = "November": M$(11) = "December"
150 I = 1
160 WHILE 1 <= I AND I <= 12
170 PRINT USING "##月は "; I;
180 PRINT M$(I-1)
190 PRINT
200 INPUT "何月"; I
210 WEND
#include <stdio.h>
void main(void)
{
char m[][10] =
{
"January" , "February", "March" , "April" ,
"May" , "June" , "July" , "August" ,
"September", "October" , "November", "December"
};
int i = 1;
while (1 <= i && i <= 12)
{
printf("%2d月は ", i);
printf("%s\n", m[i-1]);
printf("\n");
printf("何月? ");
scanf("%d", &i);
}
}
に変更してください
int a[] = { 1, 2, 3 };
とすると
a[0] = 1
a[1] = 2
a[2] = 3
になります
int i = 1;
のように通常の変数も初期化
できます
{
"January", "February", ...
};
は文字列の配列です
m[0][0] = 'J';
m[0][1] = 'a';
...
m[0][6] = 'y';
m[0][7] = '\0';
m[1][0] = 'F';
m[1][1] = 'e';
...
m[1][7] = 'y';
m[1][8] = '\0';
...
と入っていきます
m[][10]は1番長い文字列9 + 1(終了記号の分)
を指定します
i = 1ならm[i-1]を表示します
の%2dは整数を2桁で表示します
printf("%s\n", m[i-1]);
の%sは文字列に置き換わります
BASIC補足
PRINT USING "##月は "; I;
は##が数値に置き換わります
##.#など小数点付きでの表示など
があります
"abc"は
BASICでは、
文字数の3と'a','b','c'が格納され
C言語では、
'a','b','c','\0'
になります
1byte = 8bit = 2進数8桁
= 0~2の8乗-1 = 0~255
なので、文字数は0~255までです
までが大変だと思います
まずは、簡単に動くBASICで
遊んでみてはいかがでしょうか
は、このブログ(以下のリンク)からダウンロードできます