プログラミング入門
私は、私たちが一緒にテレビゲームをつくることができるように、Cでプログラムするために私の子供ショーンとthaliaを教えています.彼らは私が使っているのと同じツールのいくつかを使うことを学んでいます.
ここで我々が開始するために何をしたの要約、およびいくつかの我々はこれまで学んだことの一部です.
我々はa page on github , それで、我々は我々のコードを共有することができます. 我々は、同じ場所にブログの記事を書くことができます作成しました.我々は、我々がしていることについて書くのが良い考えであると思います、そして、うまくいけば一部の人々は我々の進歩に続きます. コンピュータに必要なライブラリをいくつかインストールしました.
GitHubアカウントを作成しました. 我々のGithub組織に加えられます. RSA SSHキーを作成しました 当社の他のPCにSSHのプライベートと公開キーをコピーしました. GTTHUBアカウントにSSH公開キーを追加しました.これによりGithubに変更を加えることができます. GITHUBを使ってアカウントを作成します. 私の2人のメインPCのそれぞれに、それぞれの子供たちのために: ユーザーアカウントを作成します. クロム同期にログインします. githubとdev . toにログインします. プログラマブル補完 つのGitリポジトリをクローン化しました.
いくつかの基本シェルコマンドを学びました. VRMなどのジョブをCtrl - Zで停止できます. 我々は、上下の矢印を使用して前のコマンドを見て、必要に応じて変更し、それらを再度実行します.
また、CTRL - Rをコマンド履歴を使用して逆検索することもできます.また、Ctrl - Sを再度検索することもできます.でも読むhow to fix ctrl-S 最初!
VIMのいくつかの編集モードがあります.通常モードで起動します. プログラムを入力する前に、プレス 変更を保存するには、ESCを押すと、“ノーマルモード”に戻る エンター 我々が押すとき マウスを使用してテキストを選択する行を選択できます.トリプルクリックし、全体の行を選択してドラッグします.または、我々はプレスすることができます プレス また、プレスすることができます マウスや矢印キーを使用して線をペーストしたい場所に移動します. プレス ファイル内の異なる点に移動する必要があるときは、矢印キーではなくマウスを使う方が一般的です.
私の娘は、彼女が彼女のポストに書いた最初の単純なプログラムのいくつかを説明しました.
後に我々はプログラムを入力し、それを保存してESCを押して
プログラムをコンパイルします.最も簡単なコマンドは以下の通りです.
エラーがあればコンパイラが教えてくれます.
うまくコンパイルすると、以下のようにhelloプログラムを実行できます.
コンパイラは、以下のように実行するならば、プログラムが間違っているかもしれないことについてより良い警告を与えます.
我々のプログラムをテストした後、我々は入力して停止したエディタに戻ることができます
時々、他のCライブラリと「リンク」する必要があります.例えば、我々のプログラムが使いたいならば
子供たちに自分のプログラムを書く前にdemo program Cでいくつかの基本的なものを表示するには: ハロー・ワールド 文字列変数 int variable , math multiplying ループについて もし別のメッセージを奇数で印刷するなら モジュロ演算子 サブルーチン: rep , nl 機能:ピタゴラス サブルーチンと関数の違いは何ですか? 子供たちはサブルーチンを書いた を繰り返します. これは私たちが書いたデモプログラムです.ちょっとした混乱ですが、言語のいくつかの特徴を示します.
前の投稿
目次:
ここで我々が開始するために何をしたの要約、およびいくつかの我々はこれまで学んだことの一部です.
セットアップ
sudo apt install libsdl2-dev libsdl2-gfx-dev libsdl2-ttf-dev \
libsdl2-image-dev libsdl2-mixer-dev libglew-dev
私の子供たちのために、私は以下のセットアップをしました:ssh-keygen
. ~/.bashrc
. bashがファイル名を完成しないとき、私はそれがおかしいとわかります.git clone [email protected]:gamedevfromscratch/gamedev.git
git clone [email protected]:gamedevfromscratch/kisskit.git
基本シェルコマンド
いくつかの基本シェルコマンドを学びました.
ls
カレントディレクトリのファイルを一覧表示します.cd foo
変更ディレクトリfoo
. cd
それ自体はホームディレクトリに戻ります.tree
ファイルとディレクトリのツリーを示します.vi file.c
オープンfile.c
vimエディタ(後述).fg
「前景」を表し、停止したジョブを続けます.また、CTRL - Rをコマンド履歴を使用して逆検索することもできます.また、Ctrl - Sを再度検索することもできます.でも読むhow to fix ctrl-S 最初!
VIMの基本編集
i
“挿入モード”を入力してください.:w
を入力し、Enterキーを押します.:q
エディタを終了する:q!
変更を保存せずに終了する.:
コマンドを入力する:w
, Vimは“コマンドモード”に入ります.コピーペースト
v
ビジュアルモードまたはキャピタルV
「Visual Lineモード」で、矢印キーで行を選択します.y
“ヤンク”または選択した行をコピーします.d
“削除”または選択した行をカットします.p
コピーした行を下にペーストする.Cプログラムのコンパイルと実行
私の娘は、彼女が彼女のポストに書いた最初の単純なプログラムのいくつかを説明しました.
後に我々はプログラムを入力し、それを保存してESCを押して
:w
, エディタを停止し、Ctrl - Zでシェルに戻る必要があります.プログラムをコンパイルします.最も簡単なコマンドは以下の通りです.
cc -o hello hello.c
これは実行可能ファイルを作成しますhello
ソースコードファイルからhello.c
. 我々が省略するならば-o hello
, ジャストタイプcc hello.c
, コンパイラは実行可能ファイルに名前を付けますa.out
, これはあまり役に立たない.エラーがあればコンパイラが教えてくれます.
うまくコンパイルすると、以下のようにhelloプログラムを実行できます.
./hello
書く必要がある./hello
だけでなくhello
, シェルが通常のディレクトリで実行するプログラムを探すのではない.誰が危険なプログラムのどのような種類を知っている周りに潜んでいるかもしれない知っているls
or vi
?コンパイラは、以下のように実行するならば、プログラムが間違っているかもしれないことについてより良い警告を与えます.
cc -o hello -Wall hello.c
The -Wall
「警告:すべて」の略です.我々のプログラムをテストした後、我々は入力して停止したエディタに戻ることができます
fg
.時々、他のCライブラリと「リンク」する必要があります.例えば、我々のプログラムが使いたいならば
sqrt
関数は、平方根を計算するために、我々は数学ライブラリとリンクする必要があります.このオプションは-lm
. これはプログラムコールをコンパイルする完全なコマンドですmath.c
数学ライブラリとリンクするcc -o math -Wall math.c -lm
コンパイラを使うのはちょっと難しいので、ラッパースクリプトを書きましたccw
「警告を伴うCコンパイラ」のために.これにより、コンパイラはすべてのオプションとライブラリを必要とする可能性があります.例えば、ccw hello
また、プログラムを使用することもできますmake
コンパイラを実行するには、Makefile
. この方法を別のポストで見てみましょう.デモプログラム
子供たちに自分のプログラムを書く前にdemo program Cでいくつかの基本的なものを表示するには:
%
除算後剰余#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void rep(char c, int n)
{
for (int i=0; i<n; i++)
putchar(c);
}
void nl(void)
{
putchar('\n');
}
float pythagores(float x, float y)
{
return sqrt(x*x + y*y);
}
#define REPEAT(n) for (int i=0; i<10; i++)
void praise(int n, char *name)
{
for(int i=0; i<n; i++) {
printf("%s is the best. ", name);
}
nl();
nl();
}
int main(void)
{
char *name1 = "Thalia";
char *name2 = "Sean";
srandom(time(NULL));
int a = random() % 11 + 2;
int b = random() % 11 + 2;
praise(50, "Nika");
praise(30, "Sam");
praise(25, "Sean");
praise(20, "Thalia");
nl();
nl();
for (int i=0; i<10; i++) {
if (i % 2 == 0)
printf("hello %s %d*%d=%d\n", name1, a, b, a*b);
else
printf("hello %s %d\n", name2, i);
}
nl();
nl();
int size = 10;
for (int i=0; i<size; i++) {
rep(' ', size-i);
rep('*', i*2+1);
nl();
}
for (int i=size-2; i>=0; i--) {
rep(' ', size-i);
rep('*', i*2+1);
nl();
}
nl();
nl();
printf("pythagores(30, 40) = %f\n", pythagores(30, 40));
return 0;
}
次の投稿、サムによって前の投稿
目次:
Reference
この問題について(プログラミング入門), 我々は、より多くの情報をここで見つけました https://dev.to/gamedev/basic-programming-in-c-243bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol