復 習

もう繰り返しの使い方はマスターできましたか?単純な繰り返しや二重になった繰り返しなど,自由自在に扱えるようにしましょう.ポイントは,初期値と終了条件です.では,グラフィックの解答です.

【演習】

for文を用いて,同心円を描く.

#include <stdio.h>
#include "mogra.f"

void main()
{
    int r;

    g_init(640,480);

    for(r=1; r=<10; r++){
        circle(320, 240, r*5, r);
    }

    gend();
}


【演習】

Y = A sin(X)のグラフを表示してみよう.

#include <stdio.h>
#include <math.h>
#include "mogra.f"

void main()
{
    int x, y;
    g_int(640,480);

    for(x=0; x<640; x++){
            y = 240 - 100 * sin(3.1415*x/320);
            pset(x, y, 0);
    }

        gend();
}

今日は配列(文字列)

まず,C言語の変数の型の復習をしよう

符号つき 符号なし
char 8ビット -128-+127 0-255
short 16ビット -32768-+32767 0-65535
long 32ビット -2147483648-+2147483647
float 32ビット
double 64ビット

char型の変数は,1文字(1バイト=8ビット)を表す

例:

#include <stdio.h>
void main()
{
    char c;
    c = 'A';
    printf("文字は%cです\n",c);
    printf("コードは%xです\n",c);
}

参考:書式指定子

%d 10進数
%o 8進数
%x 16進数
%f 浮動小数点
%c 1文字
%s 文字列

コンピュータ内部では,全て二進数→文字はどうやって表現するの? 文字コード

1バイト分(256文字)で英数字,記号をあらわす.

日本語は→2バイト文字

文字列を表現するにはどうしたらよいか→配列を使う.

例:

#include <stdio.h>
void main()
{
    char c[5]="ABC0";
    int i;
    for(i=0; i<5; i++){
        printf("%d文字目は%cです.コードは0x%xです.\n",i+1,c[i],c[i]);
    }
    printf("与えられた文字列は%sです\n",c);
}

文字列の入力

#include <stdio.h>
void main()
{
    char c[256];
    printf("文字を入力してください:");
    scanf("%s",c);
    printf("入力された文字列は%sです\n",c);
}

文字配列の注意点

文字配列を扱うには,文字列を構成する文字のほかにもうひとつ文字コード"0x00"(ヌル文字)が必要となります.
配列は,実際に必要とする文字数よりも,余分に1文字分用意する必要があります.足りないと致命的なエラーとなります.ハッキングなどに良く使われる手口です.


文字と文字列の違い

文字 'A' 1バイトの文字

文字列 "ABC" 2バイト以上の文字,最後に必ず\0がつきます.日本語の文字も必ず文字列になる


文字の計算

コンピュータ内では,文字は全て数字として扱われます.では,

    a = 'd';
    a++;
    printf("%c",a);

とすると,どうなるでしょう.

【演習】

1. キーボードから入力された文字数を数えるプログラムを作成しよう.

2. 入力された小文字を,大文字に変換するプログラムを作成しよう.

問題2を先にやってみてください。2では、文字で演算をします。


Oh-o! Meijiのレポートから(第9,10回)のところへ,演習で作成したプログラムを送る.プログラムには必ず,学年,組,番号,氏名,メールアドレスを記入すること.