ないブログに表示されています。新しい記事を書く事で広告が消えます。(Fri)PICの記事は新しく作ったPICカテゴリーに移送されました。これで少しはわかりやすくなった・・・かな?今日は半月ほど前に書いたProgramカテゴリー記事の続きですなんか「条件文について」ということになっているようですので、それについて書いていこうと思います。条件とはなんでしょうか?例えば、学校に行くときに自転車を使っている人がいるとしましょう。その人は普通、天気を見て、晴れていたら自転車で、雨だったら歩いて、学校に行きますよね。この時この人は、「天気」を判断して自転車で行くか、歩いていくかを決めますね。この「天気」、この「天気が晴れか雨か」がこの場合の条件になっています。図解するとこうなりますよね。晴れだったら自転車、雨だったら徒歩。大体こんな感じですよね。これが条件、つまり条件文というのはこれをC言語の文にしたもの、つまり条件によって実行する文を変える処理構文ということです。それでその条件に当てはまるのが、変数の値だったり、センサーの値だったり・・とする訳です。それでこの条件文を使ったプログラムがこちら。x;printf("点数を入力してください。");scanf("%d",&x);if(x>=60){printf("点数は%d点です。/n",x);printf("あなたは黒点です。/n");}else{printf("点数は%d点です。/n",x);printf("あなたは赤点です。0;}高専生おなじみの赤点判定プログラムです。点数を入力させて、それが60点以上なら黒点、60点未満なら赤点を表示させる通称「現実を見せるプログラム」です。血も涙もないプログラムとも言うそうです。それでこのプログラムですが、最初にscanfで、値の入力を行い、そのあとでifという文があります。これが先ほど言った条件文なのです。条件式が正しくない場合は、その下のelse{}で囲われた部分の文を実行します。このように使われるのがif文です。因みにifの中に更にifをいれることもできるし、elseの方は省略することもできます。if(条件文)と書く事で、上のif文の条件が正しくなかったときに更にif文を作る、みたいなプログラムを作ることもできます。これが基本的なifの条件式の書き方です。実はまだ条件分というのはあったりします。今度の記事では、これ以外の条件文に付いて書いていこうと考えています。(Thu)改悪だろこれ。見にくい・・・(笑)という訳で、以前お話しした耀に今回は、scanf文のもっとコアな使い方について説明したいと思います。前回の話では、通常はscanfの文はこんな風や、scanf("%c",&s);こんな風にscanf("%d",&x);記述することで、キーボードから値を入力することができるものであるというで辺りで終わったかと思います。今回はこの入力をもっと複雑に行う方法について紹介します。こんな感じのプログラム。s;printf("PIC講習は終了しましたか?(y/n)");scanf("%[yn]",&s);printf("貴方の答えは%cです。0;}このプログラムだと、scanfは小文字のyとnしか認識しません。yかn以外の文字や数字が入力された場合は、強制的に読み取りを中止します。yかn以外の返答は無視されるようなプログラムが作成できます。このように[]内で指定した文字のみを入力し、それ以外を入力しないシステムを、スキャン集合指定子といいます。なんだかフィルタのようなものですよね。この読み取る文字が例えば、数字以外、なんて感じにしたい場合に、これだと大変ですよね。逆に今度は「読み取らない文字」を指定する方法を紹介します。s;printf("評価を入力してください(A~Zランク)");scanf("%[^0123456789\n]",&s);printf("評価ランクは%cです。0;}このように読み取らない文字を指定する場合は、先程と同じように指定したい文字を[]で囲います。指定する文字の前に^を付けます。これで読み取らない文字の指定をすることができます。このプログラムで読み取らない文字は0から9の数字と\nという記号です。これは\とnではなく、\nで一つの記号を意味しています。記号の意味はズバリ、「改行」です。C言語においては、改行を\nという記号で示しているのです。これをそのまま改行記号といいます。printfであいうえおと表示したい場合はprintf("あいうえお");と記述するのではなく、printf("あ\nい\nう\nえ\nお\n");と記述すればいいという訳です。先程の0から9の指定はscanf("%[^0-9\n]",&s);このようにハイフンを使って簡略化することができます。一般的に使える方法なので覚えておくとさらに便利ですね。scanfには色々と複雑な記述方法がありますが、scanfだけをいつまでもぐだぐだやっている訳にもいかないので、scanfの話はこの辺で一度終了とさせていただきます。時間があればこの話はしていこうかな。それで次回ですが、次回はいよいよ条件式、まずはif文について書いていこうと思います。Comment(0)文字入れます。(Sat)プログラムの記事の続きです。前回は文字の出力の仕方について記載したかと思います。今度は逆に文字を入力するときについて記載しようと思います。s;printf("文字を入力してください。");scanf("%c",&s);printf("入力された文字は%cです。0;}数字だとこんな感じになります。x;printf("数字を入力してください。");scanf("%d",&x);printf("入力された数字は%dです。0;}とまぁこのようなプログラムになります。文字の時はchar型を使っている。それだけの違いですね。それで大体感じで分かるとは思いますが、このプログラムはどちらも入力された値を変数に入れて、そのままprintfで出力するというものです。プログラムを実行して、キーボードで文字や数字(文字の場合は一文字のみ)を入力すると、その入力した文字が表示されるというものですね。pirntfがわからなければこちらの記事を参照ください。このプログラムで値の入力を行っているのが、6行目のscanfという文です。文の書き方はprintfに似ていますね。一般的なscanf文の書き方はこのようになっていますscanf("変換指定文字",&値を入れたい変数名);この変換指定文字というのがprintfでもでてきた%dや%cのことです。int型の整数のときには%dを、char型の文字の時には%cを使います。float型やdouble型の時は一般的に、%fを使います。指数表示させたい時は%eになります。値を入れたい変数名とはそのままの意味です。上のプログラムだとsとかxになります。ここで重要なのが、printf文の時はカンマの後にすぐ変数名になりましたが、scanf文の場合は、カンマと変数名の間に&が入ります。これが必要かという話はアドレスというものを理解しなくてはなりません。その話はこのペースだとだいぶ先になるので、今はこういうものだと割り切ってください(笑)まぁこのような感じでscanf文は使います。次のProgram記事ではscanf文のもうちょっと発展した使い方を紹介します。Comment(0)文字だします。(Sun)という訳で以前の続きです。いっても半月ほど前ですね。この時は、「変数」という箱があるよ。なんて話を適当にしたと思います。それで今回はまた別の話として、画面に文字を表示させる方法について紹介したいと思います。画面にLuzと表示させるプログラムはこんな感じ。0;}まぁこんな数行でLuzという文字をPCの画面に表示することができます。見ればわかると思うのですが、ここで、実際に画面に文字を表示させる命令をしている文が5行目のprintf("Luz");です。ここに書かれているprintfというものは”でくくった中の文字を表示することができる関数というものです。要するにこのように書けば、"で囲われている部分の文字を画面に出力する。それに、以前紹介したおまじないを付け加えることで、このようなプログラムができる訳です。ここではprintf以外の命令は行っていないのでpirntf以外は全部おまじないですね。日本語の使えるPCであれば、日本語を表示することもできます。日本にあるPCなら大抵日本語の表示ができるということです。日本語の表示をするときもこんな風にprintf("るーす");という感じで打てば大丈夫です。何ら変わりはありません。なんでこのようなことができるかというと・・・半角だろうと全角だろうと結局全部PCにしてみれば文字は数字の集合体であるということは以前説明したかと思いますが、PC側が「その数字の集まりを文字に置き換えられれば」どんな文字でも出力することはできるんですね。中国語のPCなら半角英数+中国語の文字として認識することができ・・・といった具合です。PCが日本語に対応していれば、printfに日本語を書いても、その日本語をPCが理解して画面に出力することができるという訳です。ムツカシイというか意味深な説明ですが、まぁこんなところでしょう。因みにこのpirntfは変数の値も出力させることができて例えば変数aの値を出力したければprintf("%d",a);となります。これでaの値(数字)が出力されます。a=5;printf("aの値は%dです。0;}こんな風にかけて、これだと出力結果はaの値は5です。要するに%dと書いたところに変数の値の数字が入って、その入る変数を”のくくりの後にあるカンマの後に書くことで、変数の値を出力しているという訳です。難しく言うと%dにaの値を代入している、ということになりますが、これの方がわかりやすいかな?複数の変数の値を出したい場合は、printf("aの値は%dで、bの値は%dです。",a,b);とこのようになります。因みに%dについてですが、これは変数がint型の時は%dでいいのですがchar型の時は%cに、float、double型の時は%fになります。いうのもちゃんち理由があり、また、他にもきっちりした区分けがあるのですが、とりあえずややこしくなるので今回はこの話は省略で。pirntf関数はまぁこのようにして使います。他にも画面に文字を出力する関数はありますが、他のものはまた今度ということで。次回は逆にキーボードから値をプログラムに入力する方法を紹介します。(Sun)一昨日のプログラムの記事の続きです。今日はいきなりですが、変数というものについてのお話をしようと思います。変数とは、まぁ所謂箱です。プログラム上でいう箱なんです。何を入れる箱かというと、具体的には値、即ち数値です。ROBOLABでいうところのコンテナというやつです。センサーの値だったり、時間の値だったり、まぁ色々です。いった数字を入れておく箱みたいなものだと思っていてください。そんでもって変数は計算を行うこともできます。変数内の値を足したり引いたり・・・と色々できます。変数にはいくつか種類があって、この種類を型といいます。文字の格納に使われる。整数の格納に使われる。少数の格納に使われる。少数の格納に使われる。このようなものがありますね。あとはlongとかshortとかbyteとかがあるかな。変数という概念はC以外でもあっちこっちにあるので、結構言語によって色々な型があったりします。たくさんの言語を知っていると、こんがらがること必須ですが、その辺りは「慣れ」ですね。それで変数の使い方ですが、変数は使用する前に、「変数の定義」をしなくてはありません。変数を使う際には必ず変数ごとに必要な作業です。変数の定義はプログラム上ででき、このように書くと変数の定義ができます。変数名;型は先程紹介した、intやchar等のところから使いたい型の種類を、選んで書いて変数名の所には任意の文字を書いてください(半角英数一部記号が使えます。)但し、最初の文字はアルファベットでないとコンパイルが通りません。大文字、小文字は区別されますが、基本的に小文字を使うのが慣例です。この辺りの理由はまた今度説明するかもです。例と挙げるとこんな感じ。型の変数xと、char型の変数sと、float型の変数aと、double型の変数bが定義されました。これで例えば、x=10;とすることでxという変数に10という数字を入れることができます。最初の一行は今はおまじないと覚えていてください。main(void)というもので囲われた中に書くことになります。この辺りも今はおまじないで大丈夫です。Cには最初の段階だと結構の頻度でおまじないが出てきます。最初の段階でこのおまじないを理解しようとするとC言語はまず理解できなくなるのであっちこっちの参考書でも、この辺をおまじないにする傾向は強いようです。いう訳でプログラムの中を説明します。このプログラムではまずint型の変数xを定義して、そのあとでxに10を代入しています。それだけの意味のないプログラムです。0;も今の段階ではおまじないです。