
このC言語学習のコースは、プログラミング教育を想定して作成しています。
注)動画中の、この章というのはセクション3からになります
キーボードに刻印されているKeyの文字はそれぞれ読み方があります。プログラミングが初めての方には聞き慣れないこともありますので一覧にして解説します。
iSHのベーターバージョンを実行するために必要なtestflightをiPadに導入しましょう。WiFiでインターネットに接続している必要があります。
2020年11月現 在でiSHはAPP Storeから正規にダウンロードできるようになっています。動画中でアップルストアと言っているのはAPP Storeの間違いです。APP Storeに置き換えてご理解いただければと思います
iSHの正式公開版は、そのままではC言語学習に使えないので、環境を整えていきます。正式版はパッケージインストーラー等がテスト版と違って削られているので自己責任でインストールします(簡単です)。
まずはiSHにパッケージインストーラーを持ってきます。
iSHにapkコマンドが導入できないという方に現在できるようになっていますという内容で解説しました。
testflightのベーターアプリケーションテストについて解説します
マウスはBluetoothで接続して下さい、メーカー毎に違いが有るので、マウス付属のマニュアルに接続方法が解説されていますので参考にして下さい。
iPadでプログラミングを学習する場合は外付けのキーボードがあった方がいい理由と、その設定について解説しています
前回までの解説どおりに実行していればもう少しでプログラミング環境が手に入りますよ
iSHはターミナルなのでC言語のコンパイラなどはネットから無償で入手しましょう
コンピュータの中に自分の作業場所を用意しそこでプログラミングするのが安全です。
実際のプログラミングの流れと実行の様子をお見せします
iSH状で wget http://983m.biz/CSource/hello.c で、ダウンロードしてコンパイルできます
Windowsやアンドロイドタブレットをお使いの方向けにお話ししています。
インターネットのサイト上でプログラミングを実体験できるサイトがあるのでご紹介します。
VimはどのOSにもあるテキストエディターなのでプログラマには必須のアプリケーションです。
C言語や後継のプログラミング言語を根本から理解するにはノイマン型コンピューターの理解が必要です。初めてプログラミングを学習する方はこの章を省かないでください
コンピューターの基礎をまず理解しましょう。動画中でフォン・ノイマンをアメリカ人とお話していますが正しくはハンガリー出身でアメリカへ移住したというのが正しい内容です。エジソンの発見である熱電子効果を元にフレミングらが真空管を造り、その真空管で世界初の汎用計算機ENIACが作られますがその時使用した真空管の数は57000本だったそうです。
コンピューターの基礎を理解しましょうのその2ですが、ノイマン型コンピューターの構造についてお話しています。
コンピュータで扱うことのできる数値と数文字、進数についてお話します。
ビットについてまずは理解しておくとこの先いろいろと役立つはずです
この内容は、C言語のプログラミングとは直にリンクしませんが、理解しておくと役に立つとおもいます。気楽に聴いてくださってかまいません。
10進数から2進数への変換の古典的手順を示します
エンジニアが暗算で10進2進の相互変換する場合に必要なことなので解説します
10進数と2進数の暗算方法の解説です。じゅうようなので暗記しましょう
10進数を2進数に変換できれば、あとは8進数に変換し直すのは簡単なので実例で解説します。
10進数を2進数に変換できれば、あとは16進数に変換し直すのは簡単なので実例で解説します。
まずはノイマン型コンピューターの基礎的なことからおはなしします。C言語に直に関係のあることではないのでスルーされても構いません。ただ、ちょっとワクワクする未来のコンピューターがいま研究されていますというお話です
手書き解説にはなりますが、量子コンピューターの理解の難しい部分を出来る限り簡単に解説します。数学は使いません。珈琲ブレイクなのでスルーされても構いません^^;ほんの少しでも量子コンピューターに興味を持つ人が増えてくださればと思い動画にしておきます。
この章で理解するポイントについてです。
コンピューターのプログラミングで使用する変数とはなにかということを理解しましょう
数学が苦手だとプログラミングはできない?という都市伝説がありますがまったく根拠がなく、多くのエンジニアに聴くと数学よりも、国語が必要という人が多いでしょう。つまり、数学とは違う点が多々あるからです。
数学とプログラミング、両者の変数の違いについての違いの解説の後半部分です
メモリイメージ図を描けるようにします。メモリイメージ図が理解できれば、後々その効果が出てきてC言語の理解が付加あります。
文法解説の前ではありますが、変数に関係して事前に理解しておいてもらいたいので、実際にプログラムを書いてお見せします。
iSHからwget http://983m.biz/CSource/size.c でソースをダウンロードできます。
C言語の変数型についての解説になります
メモリ上に変数エリアをとる以上メモリイメージを描くことができなければなりません
浮動小数点型の変数は大型の変数です。メモリイメージと言うか、ビットイメージの理解が重要です。
C言語では様々な定数(ジョウスウ/テイスウ)を使うことができます。一通り解説します
予約されているキーワードは変数名には使えません
メモリイメージの解説時に、アドレスの数値が曖昧にあっている部分がありますが、解説したい部分:ポイントには影響がないので、メモやノート作成時には適宣に修正いただければと思います
この章のトピックについて解説しました
配列は別章で改めて詳細に説明しますが、配列がポインタと密接な関係にあることとC言語の文法がみごとにそれを表現していることを解説します
実際にプログラムで表示してみましょう
ソースをiSHでwget http://983m.biz/CSource/dim.c でダウンロードできます。
関数は別章で解説しますのでここでは概念的なことを説明します
実際にプログラムを組んで、関数のポインタを表示してみましょう
wget http://983m.biz/CSource/ftest.c でiSHにソースをダウンロード出来ます。
メモリイメージとポインタ、ポインタ変数の関係似ついて解説します
実際にプログラムをつくる過程をお見せします。
wget http://983m.biz/CSource/psize.c でiSHにソースをダウンロード出来ます。
ISHで作ったファイルをなぜiPadにダウンロード出来ないのかを解説します。
全回はchar型だったのでint型でも確かめてみます。プログラムソースをおつけします
wget http://983m.biz/CSource/prtest.c でiSHにソースをダウンロード出来ます。
関数は別章で詳細に解説しますが、ここでは関数名がポインタである理由を探ってみたいと思います
wget http://983m.biz/CSource/ftest.c でiSHにソースをダウンロード出来ます。
C言語の文法の中でも理解の難しいと言われるポインタのポインタを解説します.
wget http://983m.biz/CSource/prtest2.c でiSHにソースをダウンロード出来ます。
ポインタのポインタを使って、通常の変数の中身を書き換えてみます。
内容的には、配列と構造体とポインタが残っていますが、配列と構造体については別途解説します
メモリーをブロックの連なったものとして使う変数を配列といいます。
1バイトの変数の配列と、メモリイメージをまずはしっかり理解します。
多バイト変数の配列の場合メモリのアドレスの進み方や求め方について解説します
二次元配列を理解するとそれ以上の配列の理解が簡単になります
二次元の配列を理解していれば三次元の配列の理解は簡単に出来ます
文字列をメモリに格納するには1次元の配列が必要です
配列の宣言と同時に値を格納する初期化の意味についてお話します
配列の様々な初期化方法について解説します
1次元の配列とポインタの関係を理解しやすいように1バイトの型の配列で実際にプログラミングしてみます
2次元の配列とポインタの関係を理解しやすいように1バイトの型の配列で実際にプログラミングしてみます
配列に関して理解していただきたいポイントについてお話してみました
構造体とはなにかについて2回に分けて詳細に解説してみました
データーの構造化について解説しました
カレーライスを作る=調理するときの食材を考察すると、データーの構造化が見えてきます。
C言語で構造体はどのように表現されるのかを解説します。
構造体宣言時のタグ名は色々な使い方があります
構造体の宣言で、typedefを使い新たな型を定義します。
構造体をアクセスするやり方を解りやすく解説します
インクルードファイルの使い方などについて解説します
実際にportab.hを使ったプログラムを書いてみましょう
構造体のタグ命式の宣言法とメモリ領域へのアクセスの仕方について解説します
構造体をtypedefを使って型に置き換えて、変数宣言しポインタアクセス出来るまでを解説します
文字列の表示位置がおかしかった件の修正について解説しました
ここまでのレクチャーの流れとこれからの学習についてお話ししました
すでにC言語のプログラムのファーストステップを通過してはいますが、あらためてC言語についての基本事項を解説していきます
コンパイラやインクルードファイル、ライブラリなどの存在についてあらためて解説します
インクルードパスとライブラリパスを実際に確認してみましょう
Cのソースファイルと、コンパイル後の実行形式のファイルの中身を確認してみましょう
C言語のプログラムは通常は複数のソースファイルを使ってコンパイルします。実際にお見せしましょう
C言語のソースファイルの中身の見方を知らないと、他の人が作ったプログラムを読むときに困ります。
わかってしまえば簡単なことなんですがC言語にとってとても重要な考え方ですのでしっかり理解しましょう。
if文の()の中に直に真偽の値を入れて動作を確認してみましょう
実務レベルのCのソースファイルを使ってお見せします
スコープとは、プログラムを構成する識別名の認識できる有効範囲のことを言います
スコープとは何なのか、どのような種類があるか理解できるようになります
C言語のテキストには書いていないことが多いですが、重要なポイントです
ヒープ領域とは、作成したプログラムがOSから動的にまとまって連続した量のメモリを借りることのできる場所:エリア=スコープになります。
C言語以降のプログラミング言語にとってとても重要な概念等について解説します
実はスタックエリアというものがプログラミング言語の発展に大きく寄与したということの説明です。
C言語の関数がスタックというしくみがあってこそという仕組みについて解説します
CPUのレジスタのスタックポインタとベースポインタと関数との関係について解説しています。アセンブラ言語レベルの話で、理解できなくてもC言語のマスターには影響がないので問題ありませんので教養程度に視聴してください
6章でも解説しましたが、あらためて真と偽が、制御構造で重要な判断材料であることをCPUに使い部分で解説します。
真とか偽という状態は、C言語のシステムが出しているのではなく、CPUが命令を実行したあとのレジスタのステータスを読み取っているのです。
制御構造とはプログラミングの構成パターンで、我々の脳の動きに習ったものです。PADはC言語用に日立製作所で開発されたチャートダイアグラムです。
順次実行は最も一般的なプログラミングのアルゴリズムです
我々の脳もこの思考パターンが重要な処理になっています
少々特殊な場合分け向きの選択分岐の制御構造です
プログラミングの制御構造の中で最も重要なパターンが繰り返しです。
do〜whileという繰り返しの構造は、まず処理を行ってから繰り返しの真偽を評価する構造です
forはC言語のテキストでは最初に出てくる繰り返し構造ですが、実は内部的にはwhileを使って作られています
サンプルプログラムを作る過程を動画にしました
プログラミングにおいて無限ループを使う場面はよくあるのですが使い方に注意があるのでよく理解してください
実際にiSHでプログラム作成・コンパイル実行をお見せします
このツールはパソコン用ですが、C言語のアルゴリズムの開設などに利用できますので、どちらかと言えば先生向けのお話です。^^;
実務では使いませんが、テストプログラムにはscanf()は便利なので覚えて損はありません。
演算子は多くのコースで軽視されていますが、プログラミング教育では重要な項目ですので、まずは概要から解説します。
printf()を利用して演算結果を表示するテストプログラムを書いてみます。
文字列の表示位置をすこし調整してみます。
前回で使用したプログラムを少し改良して余りを求める演算子を確かめて見る様子をお見せします
変数の値を1増加、1減算するための演算子ですが、前置と後置に分ける必要があります。
二倍、四倍、二分の一、四分の一といった演算がとても簡単にできます。
数学の= と プログラミング言語の=、==とは異なるんですが実例で解説してみました。
ビット演算子でよく使うのは、アンド(&)演算です
&の演算と、反転の〜の演算を実際にCのプログラムで組んでみました。
論理演算子でよく使うのは、論理積と論理和です。排他的論理和はほとんど使いません。
理解できればとても簡単なので実際にプログラムを書き換えてみましょう。
このコースは、iPadがあれば、どなたでも、基本からマスター出来ます。プログラミング教育の指導者を意識した内容です。iPadを保有していれば(9インチ以上の大きさが好ましい)いつでもどこででもC言語プログラミングが出来るようになります。意欲さえあれば他のプログラミング言語にも応用できます。