N88-BASIC、Cで初心者向けプログラミング (4回目)

2022/2/6(日)


N88-BASIC、Cで初心者向けプログラミング (4回目)
 
配列と文字列
 
BASICの配列
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)
が作られます
 
BASICの文字列
"で囲まれた文字の列を文字列といい、
最後に$を付ければ文字変数になります
A$ = "abc"
B$ = A$ + "efg"
PRINT B$
でabcdefと表示されます
文字列の長さは0~255文字までです
 
C言語の配列
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]
が作られます
 
C言語の文字列
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より多い文字数も可能です
 
何月かを入力し英語を表示する
月以外の数値の入力で終了する
 
BASICでは、
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
 
C言語では、
#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);
    }
}
 
scanfがエラーになるときはscanf_s
に変更してください
 
配列変数の初期化(初めの代入)は、
int a[] = { 1, 2, 3 };
とすると
a[0] = 1
a[1] = 2
a[2] = 3
になります
int i = 1;
のように通常の変数も初期化
できます
 
char m[][10] =
{
    "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(終了記号の分)
を指定します
 
これでm[0]~m[11]に月名が入りました
i = 1ならm[i-1]を表示します
 
printf("%2d月は ", i);
の%2dは整数を2桁で表示します
printf("%s\n", m[i-1]);
の%sは文字列に置き換わります
 
BASIC補足
PRINT USING "##月は "; I;
は##が数値に置き換わります
##.#など小数点付きでの表示など
があります
 
BASICとC言語の文字列の違いは、
"abc"は
BASICでは、
文字数の3と'a','b','c'が格納され
C言語では、
'a','b','c','\0'
になります
 
C言語の最後の'\0'は終了文字コードで0です
 
BASICの文字数は1byteで表されます
1byte = 8bit = 2進数8桁
= 0~2の8乗-1 = 0~255
なので、文字数は0~255までです
 
C言語は使用する環境を整える
までが大変だと思います
まずは、簡単に動くBASICで
遊んでみてはいかがでしょうか
 
NL-BASICとblg~.zip(prog004.bas、prog004.c)
は、このブログ(以下のリンク)からダウンロードできます

https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい
 











このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)