5/8(金)〜11(月) の学習ログです(主にC言語)

おはようございます、いつもありがとうございます。

爽やかな日が続いてますね。風が気持ち良くてそれだけで幸せな安藤です。(閾値が低いw)

このような状況の影響か、「幸せ」を感じる感性がいい感じに性能アップしてます。

3月にありました、トイレットペーパーが品薄で買えない状況の時は、人生で一番ウォシュレットへの感謝が深まりました。w

 

さて、このブログに載せている内容は毎日仲間と一緒に取り組んでいる学習フォームのまとめになっています。

学習した内容をずらずらと学習フォームに投稿するのもどうかと思いより良い学習フォームになるように模索中ですが、ここにはずらずら書かせていただいております。ご容赦ください。密かに将来、伝説の一つにでもなったら嬉しいと思ってます。

このブログには僕の日々の学習内容をログとして載せているので、学習時間とか戦略・戦術とかも載せてもいいのかな、ともぼんやり思っています。

前回からC言語の学習を再開しましたが、危なげなく続いています。Vue.jsよりセキュリティより楽しいです。(正直な気持ち)

理由はブラックボックスが少ないからかな。まだはっきり言語化はできません。

5/10より、Matzさんの本も読み始めたので、それもここ載せようか迷ってます。

内容がすごくいいので、しっかり検討しようと思います。

いずれRubyPythonはものにしたいと思っています。理由の一つはシンプルにコードが綺麗なので、好き。だからです。あと開発者お二人の顔がなんか「もってる」感がすごいからです。ここけっこうマジで思ってます。w

 

5/8(金)

C言語(web記事「苦しんで覚えるC言語」)http://9cguide.appspot.com/s_readme.html
C言語の仕組みを基礎から勉強してます。
一旦、Vue.jsと情報セキュリティはお休みして、C言語に集中することにしました。
 
●書き方の慣習
C言語はフリーフォーマットだから自由に書けるんだけど、みんながバラバラな書き方をすると訳が分からなくなるので、ある程度書き方の慣習がある。
・Tabキーを使ってインデントを使うこと
・複雑なコードには、コメント(説明文)をつける
 
プログラマーにとって大事なことは「楽をすること」
コンピュータにできることは全てコンピュータに任せられるように取り組む
 
●文字列の表示
<printf関数>
文字列を表示させる関数 printf(“文字列”);
 
関数の中ではシンプルに上から順番に動く。
そして、return文に到達すると関数の実行は終了する。
 
ただこの時点では、C言語コンパイラはprintf関数のことは知らない。
コンパイラを動作させるには、コンパイラにprintf関数の説明書を読ませることが必要。
そのための命令が、#include(インクルード)擬似命令。
#include <説明書のファイル名>
printf関数の説明書は、stdio.hというファイル。
 
#include<stdio.h>  これを記述すると、printf関数が使えるようになる。
これは、プログラムの説明書なので、プログラムの前に記述する必要がある。
 
この擬似命令とは、プログラムコードではない命令で機械語には翻訳されない。翻訳の前段階で処理される。
 
●改行文字
C言語で改行をするには、エスケープシーケンスを使う。
エスケープシーケンスとは、画面に表示できない制御を行うための特殊文字列。
改行をするために使う 「\n」もエスケープシーケンスの一つ。
「\t」は、頭揃えのためのエスケープシーケンス。
 
●数値
文字列では計算をすることはできない。
計算を行うためには数値を扱う必要がある。
ちなみに、数値と数字はコンピュータ的には区別されている。
数値は計算に使える。
数字は、数値なのか、文字列なのかによって扱いが変わる。
 
printf関数は、文字列を表示させるための関数。
文字列は、””(ダブルコーテション)で囲う。
“”で囲まれた文字列を「文字列リテラル」と呼ぶ。
 
C言語で数値を記述する場合は、そのまま記述すれば、数値として扱われる。
 
Printf関数には、数値を表示する機能もある。そのためには、出力変換指定子を使う。
出力変換指定子とは、文字列の中に埋め込んで使われる記号の一種で、外部のデータを文字列に変換して表示したい時に、その変換方法を指定する記号。
 
出力変換指定子には色々な種類がある。
最もよく使われるのは、整数値を文字列に変換する「%d」指定子。この指定子の後ろで指定した数値を数字に変換した結果が表示される。
printf (“%d”,100);
このように記述すると実行結果は「100」と表示される。
 
※日本語は表示するだけなら問題ない。ただし、海外製のコンパイラでは問題が起こることがる。
Printf(“%d円\n”,100);
「100円」と表示される
 
●基本的な計算
printf(“%d\n”,100+200);
結果「300」と表示される
 
●整数と実数
数値には、整数と実数がある。
整数とは、自然数に0と負の数を加えた数のこと。
実数とは、整数に小数値を加えた数のこと。
 
整数は3種類の書き方ができる。
・10進数(書式:数字)
・8進数(書式:0数字)
・16進数(書式:0x数字)
先頭に0をつけない数は10進数として扱われる。
先頭に0をつけた数は8進数として扱われる。ほぼ使わない。
先頭に0xをつけた数は16進数として扱われる。よく使われる。
 
実数の表記は10進数しか使えない。
コンピュータで実数を扱う方法は色々あるけど、C言語では浮動小数点方式を使用している。このため、C言語の世界では実数のことを浮動小数と呼ぶことがよくある。
 
浮動小数点方式とは、実数値を数値の並びと小数点の位置で表す方法。
巨大な数から極小な数まで扱えて便利だけど計算は遅い。
 
●実数の計算
コンピュータで正確な計算を行うのは困難。実数を使用すると必ず割り切れない数が発生する。
また、2進数で計算しているために起こる誤差もある。え、そうなんだ。
※実は2進数では、0.1などの数値を正確に表すことができない。正確さが必要な銀行のコンピュータなどは10進数の分数として計算する仕組みを持つらしい。
 
実数で計算したい時は、数値を実数にすれば自動的に実数の計算になる。
表示する時に使う出力変換指定子は「%f」になる。
 
 
5/9(土)
●型の変換
C言語では、整数と実数とで計算したら、その結果は実数に変換される。
%f指定子を使うこと。%d指定子だと正しく計算結果が表示されない。
実数を使った計算結果を整数で表示させることもできる。
C言語には、型を強制的に変換する機能として、「キャスト変換」がある。
(変換する型名)数値や変換名
printf(“%d\n”,(int)(1.05*360));
return0;
 
この結果は「378」となる
計算式をカッコで囲うのは、カッコがないと1.05が先に整数に変換されてしまうから。
 
キャスト変換は変数にも使うことができる。使い方も同じ。
 
●数値の桁揃え
printf関数は、表示する文字や数値の桁数を指定することができる。
%桁数d
 
出力変換指定子の間に数字を付けると、その桁数になるように空白を入れて表示してくれる。
マイナスの値を表示させると、-記号も1桁として扱われるので、1桁分多く指定しておくこと。
 
実数値の表示では全体の桁数とともに小数点以下の桁数を指定できる。
%全体桁数.小数桁数f
 
小数点も桁数に含む。
例えば、%6.2d では整数部分が3桁、小数点が1桁、小数部分が2桁の6桁と解釈される。
 
5/10(日)
C言語(web記事「苦しんで覚えるC言語」)http://9cguide.appspot.com/s_readme.html
●scanf関数(入力用の関数)
scanf(“入力変換指定子”,&変数名);
 
入力変換指定子とは、入力された数字をどのような数値に変換するかを表す文字のこと。
変数名には、入力されたデータを記憶しておく変数名を指定する。
scanf関数を使う場合は、変数名の前に「&」の文字をつける必要がある。
この「&」には変数の場所を知らせる意味がある。
 
scanf関数を実行すると、プログラムは入力待ち状態となる。
プログラムを使う人がデータを打ち込んでEnterキー押すと、そのデータが指定した変数に代入される。
scanf関数を使用するには、#include <stdio.h> が必要。
 
#include <stdio.h>
 
int main (void) {
int data;
scanf(“%d”,&data);
printf(“%d\n”,data);
retirn 0;
}
 
scanf 関数は、整数も実数も入力可能。
実数の場合は、「%lf」指定子を指定する必要がある。
※printf 関数では「%f」指定子。
 
一度に2つのデータを入力する場合は、入力するときに2つの数値を、スペース、タブ、改行などで区切って入力すること。
 
●scanf関数と入力ミス
scan関数は色々な問題を抱えている。本格的な開発には使われない。
scanf関数は、正しく使っていれば問題ないが、入力ミスがあった場合にこわいわけ。
 
①区切り記号の入力を間違えると、
 コンパイラによって入力した数値と異なる数値がデータとして翻訳されてしまう。
 
②極端に大きい数値を入力した場合は、
記憶できる範囲の限界を超えてしまうと、やはり入力した数値とは異なるデータとして扱われてしまうリスクがある。
 
③文字列を入力した場合は、
ここもやはり想定外の数値がデータとして扱われてしまう。
 
5/11(月)

C言語(web記事「苦しんで覚えるC言語」)
●条件判断
C言語には、if文が用意されている。
if(条件式)文;

C言語では、条件による判定を行う場合、「0」を偽の値、「0以外」を真の値、と呼んでいる。

真の値…条件判断の呼び方で、0以外の数値(負の数ですら)を意味する。trueと表記することもある。
偽の値…条件判断の呼び方で、0を意味する。falseと表記することもある。

初期化…変数の宣言と同時に数値を代入すること。

比較のための演算子としての使い道もある。
ただ、C言語には、比較専用の演算子が用意されている。
2つの数値が等しいかどうかを調べるには、「==」演算子を使う。
この演算子は、2つのの値が等しい時には結果が真になるという計算を行う。

●等値演算子
先ほどの「==」のような系統の演算子を等値演算子と呼ぶ。
次の2種類がある。
①「==」2つの値が等しいと「真」になる。
②「!=」2つの値が等しくないと「真」になる。

多くのコンパイラでは「真」は1、「偽」は0となる。

●関係演算子(<,>,<=,>=)
この演算子は、2つの値の大小を調べる演算子

●論理演算子
複数の条件を統合したり、判定を反転するために使われる。

&& かつ(AND)の意味
|| または(OR)の意味
!  否(NOT)の意味

if文では、1度に1つの条件での判定しかできないけど、論理演算子を使うと複数の条件での判定が可能となる。

●ブロック文
C言語には、複数の文をひとまとめにする機能がある。それがブロック文(複文)と呼ばれる機能。
{ } で囲むことで複数の文をまとめることができる。

ブロック文を使えば、if文の結果に対して複数の処理を実行させることができる。

 

 

また今日から(5/12)勉強を頑張っていきたいと思います。

少しでも世の中や人の役に立てる人間になりたいです。

次は、今週の金曜日に投稿します。

それでは、また!

 

 

学習教材

苦しんで覚えるC言語

http://9cguide.appspot.com/02-02.html