« 読書のスピード、ツッコミに集中して読む明石家さんまは超遅い♪&15kmジョグ | トップページ | 出張ウイーク、何とかクリア&13kmラン »

超初心者によるC言語入門、無料のオンライン・コンパイラ探しが困難、paiza(パイザ)がいいかも♪

もう、ドッと疲れた。。(^^ゞ 要するに、日本人が1人でたまにやるだけだから、何かと上手く行かないんだろうな。英語だらけ、大量の専門用語、トラブル続出。。

  

小学生向けのプログラミング記事を除いて、9ヶ月ぶりにプログラミング記事を書こうと思って選んだのが、名前だけは昔から度々聞いてるC言語。フツー過ぎて無意識の内に避けてたのか、過去15年間のブログでもほとんど触れてない。たった2回、言葉を出してるだけ。

    

今回は、工業高校の現行の教科書『新情報技術基礎』(コロナ社、非課税1496円)を利用して、一から始めようとしたけど、一(イチ)じゃなくて0(ゼロ)から始める必要があった。そもそも、C言語を扱える「開発環境」の準備に苦労したのだ。

   

201024a

      

     ☆     ☆     ☆

昔、高校数学の教科書でBASICを扱った時にも思ったけど、教科書はやっぱり学校で使うように出来てる。教えてくれる先生と環境が揃ってるのを前提にしてるのだ。

  

内容はかなり丁寧に書かれてるけど、私には引っかかる事だらけ。こう書けば正解、という具体例はあっても、「そう書かなかったらどうなのか?」、「別の正解は?」といった話がほとんど書かれてないから、結局は自分で試行錯誤するしかない。スペース(空白)や特殊な文字列の有無、改行の必要性など。

  

201024q

      

教科書・第5章、「C言語によるプログラミング」は、最初の2ページで大量の専門用語を簡単に並べた後、すぐにプログラミング開始。入力したプログラムを機械語に変換してコンピューターに理解させるための、「コンパイラ」(compiler)と呼ばれるソフト(またはアプリ)をどうするのかは書いてない。

   

本当のビギナーにとって、これが最大の難関だろう。情報は溢れ返ってるけど、分かりにくい説明が多いし、自分の端末でやってみると上手く行かないことが多いのだ。

   

   

     ☆     ☆     ☆

C言語ではなくJAVAなら、学習用コンパイラのiPadアプリを1月に手に入れてるけど、C言語で似たアプリはすぐには見当たらない(本当はあるんだろうけど)。

  

そこで、最近は放置プレイだけど前にしばらく使ってた学習アプリ、「Progate」(プロゲート)を使おうとしたら、パスワードを忘れてログイン不能 (^^ゞ 再発行で何とかログインすると、C言語のコースは無かった(笑)

    

仕方ないから、マイクロソフトの Visual Basic をダウンロード&インストールしようとしたら、重い、重い。よく分からないまま軽めのセットを選択しても7GB以上(!)で、あまりの遅さに中止。知らない人間がちょっと勉強するだけなのに、こんな苦労が必要なはずはない。

   

代わりにオンラインですぐ使える無料コンパイラを探すと、当然(?)海外サイトだらけで、動かなかったり、カーソルが逆向きに動いて(笑)入力が大変だったり、フィッシングで「おめでとうございます。当選!」みたいな表示が出たり (^^ゞ

  

この苦労を考えると案外、フツーにプログラミングのスクールに通う方が安上がりで手っ取り早いかも♪ しかし、小市民は無料で自宅で1人で頑張るのであった。時間の方が勿体ないんだけど。。

   

   

     ☆     ☆     ☆

失敗につぐ失敗で諦めかけた時に、ようやく良さげなサイトを発見。paiza(パイザ)ラーニング。「パイザ」は、通行証とかパスポートって意味で使ってる言葉だと思う。

  

以前のプロゲートと同じで、基本的には有料契約に誘い込む学習サイトだけど、無料の登録なしでも、超初心者の練習くらいは出来るようだ。萌え系の可愛い女の子キャラもお手伝いしてくれる♪

  

201024b

  

ここでは、コンパイラのことを、「オンライン・エディタ」と読んでる。女の子のすぐ右側だから、気分的に「入力」しやすい♪ 文字の入力ね。

  

無意味な見出しを除いて、教科書の通りに入力すると、「成功」! ちゃんと、「今日は (改行) 快晴です」と表示された。画面の一番下の、スクロールしないと見えない場所に(笑)。最初、気付かなかったほど。

    

201024c

   

201024d 

  

1行目の「#include <stdio.h>」で、stdio.hというファイルを読み込む(インクルードする)。2行目の「int main(void)」は、メインの関数(要するに命令)で、intは「戻り値」の型を指し、(void)は引数がないことを指すらしいけど、とりあえず意味不明♪

   

3行目からが実質的な指示で、「printf」で表示。二重引用符(ダブルクォーテーション)「"  "」で挟むと、そのままの文字が表示されると。日本語もOK。各行の最後のセミコロンを忘れると、次の行まで続く命令だと誤解される。

  

サイトにとっては、有料会員になってもらうのが成功か♪ 試しにクリックしてみると、「日本e-learning大賞 会長賞」☆

  

201024e

   

さらにクリックすると、12ヶ月で税込7200円か。安いね。まあでも、サブスクは使わなくてもどんどんお金を失うからな。アマゾン・プライムみたいに♪ またそれか! いや、最近、全く使ってないもんで。無理して買い物するのも妙な話だし、動画視聴は時間を取られるし。

   

   

     ☆     ☆     ☆

話を戻すと、コンパイラ探しと同じくらい時間を使うハメになったのが、改行を示す「¥n」の入力。これ、いくら頑張っても「\n」になってしまう。半角の円マークが、半角の逆スラッシュになるのだ。

  

パソコンのキーボード設定はちゃんと「日本語キーボード(106/109キー)」になってる。どうも、半角の円マークと半角の逆スラッシュは同じコードのようだけど、同じ右上のキーを押しても、場合によって「¥」が入力されたり「\」が入力されたりするのだ。

  

ちなみにこの管理画面では「\」になるから、「¥」は環境依存の文字として「えん」から変換して入力してる。それぞれの読者の端末でどう表示されるのかは知らない♪ 

  

円マークの無いプログラムだけ練習しようかと思ったけど、教科書のその後を読んでも円マークが登場。結局、パイザのサイトだと、逆スラッシュのまま「\n」と入力すれば良かった。気にしないで、無視♪

      

これがダメなサイトもあるのだ。もちろん(?)、環境依存文字もエラー。温厚で寛容な私もそこでイラついて、精神的パワーを浪費してしまった。

   

    

    ☆     ☆     ☆

201024f

   

さっきの入力を少し変えて、改行を減らして、「\n」を消してみると、「今日は快晴です」と一続きで出力された。なるほど、スペースさえ入らないわけね。

  

ちなみに、最後「return 0」のスペースを省略して「return0」と入力すると、エラーになった。こうゆうのがイヤなのだ。スペースや改行は、必要な時と必要でない時の区別をしにくい。

  

  

教科書の次は、面積の計算。というより、実際は単なる整数の掛け算。20×40

  

201024g

  

201024h

   

4行目の「/n」は省略してもいいけど、「%d」は省略不可。「値を10進数の整数値として扱う」という意味の「変換指定子」とのこと。

  

教科書のその後にある体積の計算(整数の掛け算10×20×30)も同時に書いてみたら、成功した。ちょっと調子が出て来たかも♪ 2行の命令なら、1行目だけ「\n」で改行すればいいのか。

    

201024i 

  

201024j

  

ちなみに命令部分の1行目の「\n」も消してみたら、改行が無くなって、「面積=800体積=6000」と表示された。スペースさえ入らないから、これはダメ。

  

  

     ☆     ☆     ☆

最後は、教科書・問2。「底辺の長さが4で高さが50の三角形の面積を計算し、実行するプログラムを作成しなさい」。わざと改行を減らして短く書いてみたけど、ちゃんと成功した。底辺×高さ÷2の「÷2」は、「/2」と入力するだけ。

   

201024k

   

201024l

  

実は最初、「0.5*4*50」と書いたら失敗。そうか、小数はダメなわけね。今後の研究課題としよう♪ またそれか!

 

あっ、例題5・3の球の体積だと、円周率3.14を掛けるから、整数じゃなくて実数の変換指定子「%f」を使ってた。半径6の球の体積

   

201024m

   

201024n

   

それなら、いつも%fでいいんじゃないの?、と思うけど、「現象には必ず理由がある」byガリレオ湯川♪ 何か、意味があるんだろうね。

   

あっ、実数扱いだと入力も無理やり小数にしなきゃいけないのか。面倒くさい。問4、200Ωと300Ωの抵抗の並列接続による合成抵抗の計算。指示された(下手な)数式を使うと、こうなると。何か、もっとラクに入力する技があるんだろうけど。無駄な小数点のおかげで、式も見にくい。

      

201024o

  

201024p

    

答は、いわゆる「和分の積」、200×300/(200+300)だから、60000/500=120オーム。当然、元の2つの抵抗値より小さくなる。1行目と2行目の正確な理解や、最後のreturn 0の理解は、また今度。

   

   

     ☆     ☆     ☆

フーッ。。 これでC言語もマスターしたから、次はもうC++か(笑)。シープラプラって可愛い呼び名だけは昔から知ってるのだ。記号は、エラー表示に見えるけど♪

      

それにしても、やっぱり最初の「環境構築」が一番大変だなと、あらためて痛感。自分のパソコンだと故障が怖いから、職場で試そうかな♪ コラコラ! ではまた明日。。☆彡

    

         (計 3664字)

| |

« 読書のスピード、ツッコミに集中して読む明石家さんまは超遅い♪&15kmジョグ | トップページ | 出張ウイーク、何とかクリア&13kmラン »

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 読書のスピード、ツッコミに集中して読む明石家さんまは超遅い♪&15kmジョグ | トップページ | 出張ウイーク、何とかクリア&13kmラン »