HN 日本語サマリー

← 一覧へ戻る
プログラミング

Tiny-C リファレンスマニュアル抜粋

Tiny-C Reference Manual Excerpt (permacomputer.solarpunk.au)

19 pointsby surprisetalk1 コメント

要約

この記事は、BASICにインスパイアされたプログラミング言語「tiny-c」のリファレンスマニュアルの抜粋を紹介しています。tiny-cは、学習の容易さを重視したBASICと、構造化された言語設計を持つC言語の要素を組み合わせ、シンプルな環境でプログラミングの基本を学べるように設計されています。記事では、tiny-cの機能、プログラムの構造、および簡単なプログラム例の解説が含まれています。

全文翻訳

tiny-c リファレンスマニュアル抜粋 作成者: vidak、カテゴリ: Archeology このプロジェクトでは、この小さなマニュアルが示唆に富むものであることがわかりました。BASICにインスパイアされたC言語の一種と言えるでしょう! https://archive.org/details/tiny-c_manual 序文 tiny-cのアイデアの源は数多くあります。まずBASIC [Kemeny & Kurtz 1967] があります。BASICはアメリカ合衆国における事実上の標準トレーニング言語となりました。高校、大学、さらには一部のプロダクションワークで使用されている産業界でも人気があります。BASICには欠点がありますが、その大きな強みは学習の容易さです。これは主に、単一のコンピューティング環境を提供するためです。新しいプログラム行を入力したり、古い行を変更したり、コマンド環境からプログラムを実行したりできます。コマンドを与える際に、編集モード、コンパイルモード、リンクモード、システムモード、実行モードなどの、自分がどの環境にいるかを覚える必要はありません。モードを切り替えるコマンドはありません。リロケータブルオブジェクトモジュール、リンクエディタ、そして「本物の」コンピュータのあらゆる付属品はありません。非常にシンプルで、非常に適切です。「コンピュータとの格闘」の要素ではなく、コンピューティングの本質的な要素に焦点が当てられています。 LOGO言語 [Feurzeig 1975] は、多くの点でtiny-cに似ています。BASICに基づいた構造化された言語と、プログラミングおよび実行のための単一の環境を提供します。LOGOは、非常に若い子供たちを対象とした公立学校で実験的に使用されました。この実験により、子供たちは簡単なコンピュータの概念を理解し、準備された一連の演習をこなした後、独自の創造的な作業を行うことができることが示されました。 C言語 [Ritchie, Kernighan, & Lesk 1975] は、ベル研究所のDennis Ritchieによって設計されたコンピュータ言語です。tiny-cはその全体的な構造をC言語から借用しています。C言語は大学や産業界で広く使用されています。UNIX [Ritchie & Thompson 1974] と呼ばれる非常に高度で強力なコンピュータオペレーティングシステムのプログラミングに使用されてきました。それでも、非常にシンプルな言語です。C言語にはネイティブな入出力(例えば、readやprintステートメント)がありません。入出力は関数を使用して行われます。したがって、C言語はコンピューティング機能に焦点を当て、入出力の開発や拡張を外部に委ねています。tiny-cはこのアイデアを採用しています。tiny-cのコマンド環境はtiny-cで書かれています。マイクロプロセッサのマシン語への翻訳は必要ありません。これは、C言語をUNIXの実装言語として使用するという考え方にいくらか対応しています。したがって、構造化プログラミングのトレーニング言語として意図されていますが、tiny-cは強力な言語です。 tiny-cオーナーズマニュアルは、4つの読者層を同時にターゲットにしています。構造化プログラミングに初めて触れる方のために、簡単なチュートリアルとプログラムのウォークスルーを用意しました。これにより、詳細に手間取ることなく、その要点を掴むことができます。構造化プログラミングの経験者には、リファレンスセクションでtiny-cの機能を素早く発見できます。tiny-cインタプリタの仕組みを知りたい方のために、その動作を説明しました。そして最後に、自宅のコンピュータにtiny-cをインストールしたい方のために、完全なインストールガイドを含めました。 はじめに tiny-cとは何か? tiny-cは、言語、標準ライブラリ、およびプログラム準備システムです。他のソフトウェア補助なしに、tiny-cプログラムを準備し、実行し、編集し、カセットまたはフロッピーディスクに保存し、後で読み戻すことができます。 tiny-cは、if-then-else、whileループ、関数、グローバル変数およびローカル変数、文字型および整数型データ型、ポインタ、配列を備えた構造化プログラミング言語です。tiny-cはオペレーティングシステムに依存しません。お使いのコンピュータの入出力ルーチンに簡単にインターフェースできます。tiny-cは独自の機械語サブルーチンを呼び出すことができるため、tiny-cプログラミング言語をお使いのシステムに合わせて調整し、システムを言語に反映させ、拡張することができます。 A tiny-c Program Walk-Through 図1-1は、2つの関数からなる完全なtiny-cプログラムです。 FIGURE 1-1 /* 1から100までの数を当てる /* T. A. Gibson, 11/29/76 guessnum [ int guess, number number = random (1,100) pl "guess a number between 1 and 100" pl "type in your guess now" while (guess != number) [ guess = gn if (guess == number) pl "right !!" if (guess > number) pl "too high" if (guess < number) pl "too low" pl"" ; pl"" ] /* end of game loop ] /* end of program /* /* random-ランダムな数を生成 int seed, last /* globals used by random random int little, big [ int range if (seed == 0) seed = last = 99 range = big - little + 1 last = last * seed if (last < 0) last = -last return little + (last/8) % range ] End of FIGURE 1-1 このプログラムはどのように機能するか? プログラムのウォークスルーを行いましょう。一番上から始めると、最初の2行はコメントです。コメントは/*で始まり、行末まで続きます。「guessnum」はプログラムを開始するために呼び出される関数の名前です。guessnumの後には、12行からなる複合ステートメントがあり、最後の行は次のようになります: ] /* end of program 複合ステートメントは、バランスの取れた左括弧と右括弧の間のすべてです。guessnumの最初の単純ステートメントは次のとおりです: int guess, number これは「guess」と「number」という名前の2つの整数変数を宣言します。tiny-cのすべての変数は宣言する必要があります。実行されると、intステートメントは変数を生成し、初期値としてゼロを与えます。 guessnumの2番目の単純ステートメントは次のとおりです: number = random (1,100) これは、numberを、最初の引数が1、2番目の引数が100で実行されたtiny-cプログラム関数randomの値に設定します。私たちのプログラムでは、関数randomは1から100までのランダムな数を返します。 次の行では、plは行を印刷するtiny-cライブラリ関数です。引数として与えられた文字列を印刷します。 whileはループを設定します。whileの一般的な形式は次のとおりです: while (expression) statement この場合、EXPRESSION部分はguess != numberであり、!=は「等しくない」を意味します。この式が評価され、真であれば、ステートメントが実行され、その後式が再度評価されます。偽であれば、ステートメントはスキップされます。最初に、guessは0であり、numberは`より小さくなることはないため、式は最初に真となります。したがって、ステートメントが実行されます。ステートメントは複合であり、6つの単純ステートメントで構成されています。これらのステートメントの最初のものは次のとおりです: guess = gn gnは「get number」の略で、別の標準ライブラリ関数です。ユーザーが端末で入力した数値を読み取り、その値を返します。したがって、ここではプログラムはユーザーが数値を入力してキャリッジリターンを押すまで待機し、その後guessにその入力された数値が代入されます。 次の3つの単純ステートメントはifステートメントです。ここで使用されているifステートメントの一般的な形式は次のとおりです: if (expression) statement ここで、expressionが真であればstatementが実行されます。 whileの複合ステートメントの5番目と6番目のステートメントはpl"" ; pl""です。pl""は新しい行に移動し、何も印刷しません。セミコロンを使用すると、1つのプログラム行に複数の単純ステートメントを記述できます。したがって、pl"" ; pl""は2つの空行を印刷します。 これでwhileループの終わりに到達しました。whileの式部分が真であったため、whileステートメントが再度実行されます。これは、式が真か偽かを判断するために式を再度評価することから始まります。最初のguessがnumberと等しくない場合、複合ステートメントが再度実行されます。別のguessが読み取られ、適切なコメントが表示され、さらに2つの空行が印刷されます。whileは再び実行されます。最終的に、ユーザーが正しい数値を当てると、guessはnumberと等しくなります。これにより、「right!!」と2つの空行が印刷されます。その後、whileの条件が再度テストされます。式guess != numberが評価され、偽であることが判明するため、whileの複合ステートメント全体がスキップされ、guessnumの終わりに到達します。ゲームは終了です。guessnumの終わり(最後の])に達したため、プログラムは停止します。 randomのウォークスルーを行う前に、整数seedとlastが宣言されていることに注意してください。