)また変数の値を計算する場合は足し算なら(x+10の結果をxに代入する)x=x+10;引き算なら(x-10の結果をxに代入する)x=x-10;かけ算なら(x×10の結果をxに代入する)x=x*10;割り算なら(x÷10の結果をxに代入する)x=x/10;と書くことができます。0;}という訳でこのプログラムだと最終的にxは10になることになります。戻った(笑))変数は基本的にこんな感じで使います。変数の計算の方法や定義の方法はもっと短く書く方法などもありますが今日はその辺りは省略させて頂きます。最初はこのくらいかな。次は画面への表示の方法について書いていこうと思います。Comment(8)ようやく、C言語の書き方のお話になりそうです。(Fri)といってもまだ基本中の基本ですけど。書いていこうと思います。こんな簡単なプログラム。main(void){printf("このブログは普通に読むと、どうも「酔う」らしいので読むときは酔い止め推奨です。0;}こんなプログラムを打って、コンパイルして、実行してみると、このブログは普通に読むと、どうも「酔う」らしいので読むときは酔い止め推奨です。いう文字が画面に出力されてプログラムが終了します。このように、プログラムを使うことで、何かのデータを画面などに表示(出力)させることができます。i;printf("値を入力してください。\n");scanf("%d",&i);printf("入力された値は%dです。0;}値を入力してください。10入力された値は10です。いう風な出力の結果が得られます。このように、このプログラムではキーボード等からデータを受け取ること(入力)ができます。i;printf("値を入力してください。\n");scanf("%d",&i);i=i+10;printf("入力された値は%dです。0;}値を入力してください。10入力された値は20です。このように、このプログラムでは、データ同士の計算(演算)をすることができます。・演算された結果を出力この3つの動作の1パターンの連続で成り立っているものなのです。多少の例外はありますけど・・・。いう訳でまずは、この3つの動作を簡単に行うことのできるプログラムを使ってこの3つを説明していこうと思います。その前に、データの入力をするにも、そのデータの演算をするにも、データの出力をするにも、そのデータを保存する場所がなければ、データなんて扱えませんよね?という訳で次回はこのデータを保存する場所。変数について書いていこうと思います。それでは今日はこの辺で。(Wed)やっぱりAtomだと限界が・・・Core2Duoのノートが欲しい。なんて考えている今日この頃です。買っちゃうと僕のノーパが5台に・・・それはちょっと多すぎる(笑)まぁ4台でもレポートやるにはこれくらいないときついですね。そんな感じで今日は以前に予告したようにコンパイラの話です。とりま、コンパイラってなんでしょうって話は全壊前回したと思います。詳しくはC言語基コンパイラ言語についての記事を参照して下さい。いっても、全然詳しく書かれてないですけど(笑)まぁここではとりあえず、「コンパイラ=翻訳機」である。いった感じのことは説明したと思います。英語できる人だと疑問に思うのがこの点、コンパイルは英語にするとcompileこれを日本語に直訳すると「編集する」という意味になるんです。翻訳も編集のひとつかもしれませんが、そもそも翻訳するだけなら”とらんすれーしょん”でいいと思いませんか?なんでわざわざコンパイルというんでしょうか。「翻訳だけ」している訳じゃないんです。こっちの方が翻訳より大事かも知れないですね。そのコンパイラが担当しているもうひとつの役目とは何か。いう話ですが、その前に。複雑なプログラムなら大体1個や2個は気が付かない打ちミスとかがでてきます。そのミスをそのまま放置して、機械語に翻訳させて、ロボットに送ってその間違ったプログラム、実行させたらどうなると思います?どうなるんでしょうね(笑)静かにお亡くなりになるかも知れないし、いきなりロボットは真赤に輝きだすかもしれない。頭のいいLEGOだったらFileErrorで済むかもしれませんけど・・・。みんなちゃんと、プログラムは確認してからロボットに送りますが、それでも確認しているのも人間なのでやっぱり抜けが出ますよね。いった打ちミス等の構文的なミスをした際に、PC側でロボットに送られる前にそれがチェックできたら便利だと思いません?そう思った先人達はそういった機能、即ちエラー発見機能を作ってしまいました。それでそれをコンパイラに搭載してしまいました。翻訳の時に間違いがあったら「ここおかしいぞ」と教えてくれるようなものを作ってしまったのです。文字通りプログラムの編集者として世に送り出されることになったのです。大体翻訳家の方で勝手に脳内修正して翻訳するらしいのでまだ翻訳作業に関しては現実の方が上ですね。エラーの検知といっても、明らかにやりたいことと違うプログラムを書いたり、括弧がなかったりしても文法的にさえあっていれば、コンパイルは大体通っちゃうのでコンパイルが通ったからと言って実際に動かしたいように動くかというと、それはまた別の話だったりします。これは現実の翻訳家でも同じですね。「これ明らかにおかしいだろー」って文章があっても、とりあえず原文を尊重して原文のまま訳すのが翻訳家の仕事ですから。最近は原文の著者に確認を取るケースも増えてきているらしいですが・・・という訳でこの「翻訳」と「エラー検知」がコンパイラの2つの大きな役割です。コンパイルが正しく行われないと、プログラムを実行したり、ロボットに送ったり、ができないようになっています。プログラムをロボットに送る前には必ず「コンパイル」という手順を踏まないといけません。それを踏まないままプログラムを送信したり、実行しても、送ったプログラムは実行されません。その場合は何も実行されないor最後にコンパイルして送信したプログラムが実行されるような仕様になっています。勝手にコンパイル+送信を一気にやってくれていたりします。Comment(0)C言語のお話をしようかと、思いまして。(Wed)また新しいカテゴリーができてしまいました。回路がアリならプログラムもアリだろ!っていう発想で作ってみました。今回は一回目ということもありますので昔お世話になったROBOLABについての記事を書こうと思ったのですが、ROBOLABってよくよく考えたらタイル式なので、紹介をするのにいちいちタイルの写真が必要になってしまう・・・これは非常にめんどくさいのでいきなり「C言語」というものを紹介しようかと思っています。今日は簡単なところから、まず、C言語ってなんでしょう。主体となって作ったプログラミング言語である。UNIXの移植性を高めるために開発された経緯から、オペレーティングシステムカーネル向けの低レベルな記述ができることを特徴としている。byうぃきぺでぃあへぇ。なんてことは置いておいて。要するにプラグラムするための言語なんです。ソフトのことじゃないんです。言語というからには、どこかの世界で通じる言葉なんですよね。どこの世界でこの言葉は通じるのか。地球上でこの言葉が通じるのは人間とコンパイラというものだけです。ロボットには通じません。この辺でふたつほど疑問が出てきますよね。コンパイラって何?ということと、ロボットには通じない?というあたりでしょうか。このふたつの疑問、これは人間がロボットにプログラムを送る仕組みを説明すれば、同時に理解することができます。普通は人間がプログラムを書いてそれをロボットに送るので順序的には人間が一番最初になりますが、それだと説明が難しいので、今回はあえて一番最後にあたるロボットから説明をしていこうと思います。ロボット、この中には小さいコンピューター、「マイコン」が入っていて、それが人間でいう脳になってロボットを動かしている、という話はしたかと思います。人間が理解できるような、文字で書かれた言語なんてものは到底理解できないんです。マイコンはどんな言語が理解できるか、それは数字です。1と0だけの二進法でしか理解ができません。PCからロボットに送るプログラムは、1と0の羅列だけで表現しなくてはなりません。人間が直接そんな1と0との羅列だけで表されたプログラムなんか書けると思いますか?まぁ一般人には無理ですね。人間側はわかりやすいように文字でプログラムを書く訳です。それでは使う言語が違うので人間は直接ロボットに命令を与える(プログラムを送る)ことができないですよね。日本語のできないアメリカ人と、英語のできない高専生では会話になりませんよね。通訳ですよね(笑)まぁそれ同じように、人間が書いた言語とロボットが理解できる1と0の羅列、これを機械語といいますが、このふたつを翻訳できる「なにか」が必要になるわけです。その何かが翻訳機「コンパイラ」という訳です。これはソフト・・・の部類なのかな?一応exeファイルだし。これに人間が書いた言語を入れると勝手にロボットが理解できる機械語に変換してくれるよーっていう代物です。打ち直す↓プログラムが完成する↓コンパイルさせる↓コンパイルされたファイル(機械語)をロボットに送る。↓ロボットが動く↓ロボカップジュニアで世界優勝!といった感じです。いうことなので人が書いたプログラムは直接ロボットに送っても理解されず、コンパイラという翻訳機にしか理解してもらえない。因みに一時期うちの学校で、人間相互でC言語を使ってコミュニケーションを図っていたこともありましたが、あれはどうにお勧めできません。C言語は人対コンパイラの構図以外では使わない方が無難です。そんな感じのC言語です。このようにコンパイラがあって、プログラムを一度変換して実行や送信をしなくてはいけない言語を「手続き型言語」と呼びます。その中でもこういった形式の言語はコンパイラ言語と呼びますね。BとかCとかDとかがこれに該当しますね。あとはJAVAとかC++とかもそうですね。あとTex(言・・・語・・・?)とか・・・LEGOでいうならNQC、NXC、RobotC全部そうですね。ROBOLABやNXT-Gも中身はコンパイラ言語です。それと対照にコンパイルが入らない言語もあります。それを「スプリクト言語」といいます。これはなんでコンパイルがいらんかというと、基本的にこの言語たちはPC内でしか使わない言語なんですね。機械語に翻訳しなくても理解できちゃうんです。(まぁホントはちょっと違うけど・・・)特にWeb系列の言語には多いですね、JAVAスプリクトとかHTMLとかパイソンやエクセルのVBAもそうじゃないかな?一部怪しいですが気しない方向で。こんな感じ終わってみればC言語というよりコンパイラ言語の説明になってしまっていましたね(笑)次回のProgram記事では、このコンパイラについてもうちっと詳しく説明します。実際のC言語の書き方とかについては、もうちょい先になりそうですね。ところで、回路、プログラムときたら次に来るのは・・・ロボットの機械構造・・・ですよね?一番苦手分野なので微妙な記事になるかもですが、今後はLEGOブロックに関してを中心に機械構造についてのカテゴリーも増やしていこうかと考えております。BlogGcraudCIAOで行っチャオwithHIMIKOご注文はロボットですか?当サイトはリンクフリーです。最新記事RadiumProduction(01/01)リチウムバッテリー規制にやられた話(08/19)SSL対応しました。(06/24)サーバをGoogleCloud上に移設した話。(02/12)噂によると平成が終わるらしいので、今後についてのお知らせを。(12/08)夏コミ出ません。(07/24)ラーメン飯テロ女装ピザ大会お疲れ様でした。(04/02)和歌山があるなら和歌川もあるのかなって思って調べてたら本当にあった顔してる(03/28)コミックマーケットで技術系サークルを出そうのコーナー(01/20)「らじぷろ」コミケ参加終了していました。(12/30)コミケ準備できました。頒布物紹介その1(12/23)冬コミサークル参加します。(11/02)RCJJ名古屋世界大会お疲れ様です。自己紹介:初めまして。某大学の情報学科に入りました。生活を送るのが今年の夢です。めーるradiumproduction☆yahoo.co.jp※☆を@に変更して下さい。