JavaRush /Java Blog /Random-JA /講義 CS50 の追加資料: 第 1 週 (講義 3 および 4)
Masha
レベル 41

講義 CS50 の追加資料: 第 1 週 (講義 3 および 4)

Random-JA グループに公開済み
ロシア語のcs50追加資料 第 1 週のタスク

最初の週の目標

  • 基本的な Linux コマンドを理解する
  • 基本的な C 構文を学び、いくつかの問題を解決します
  • もっと明確に考え始めましょう =)
IDE CS50
タスクを完了するために、CS50 はクラウドで IDE (統合開発環境) を提供します。利用するには、edXプラットフォーム上でアカウントを作成し、オリジナルコースに登録します。その後:
1. cs50.io に移動し、リストから edX を選択し、ログイン名とパスワードを入力して、[送信]をクリック します。 2. edX アカウント情報を入力し、[ ID.CS50.NET に戻る]をクリックします。 cs50.io 3. お待ちしています: 仮想空間が作成中です。 仮想空間 cs50 4. 完了! cs50アイデア
コマンドラインとCS50 IDEの起動
CS50 IDE ウィンドウの下部の [ターミナル] タブには、ターミナル ウィンドウまたはコマンド ライン パネルがあります。ここに文字列コマンドを入力できます。たとえば、アプリケーションの起動、ファイルの削除と作成、ソフトウェアのインストールなど、ウィンドウ インターフェイスの場合と同じことを実行できます。コマンド ラインを使用したことがない場合、この方法はおそらく面倒に思われるでしょう。コマンドを覚えて、アイコンやボタンをクリックする代わりに入力する必要があります。これはある程度までは真実であり、その後ウィンドウ インターフェイスが発明されました。ただし、コマンド ラインはすべてのオペレーティング システムで利用できるため、管理者はそれを気に入っています。それはすべて、それなしでは生きていけない場合があるからです。ターミナルの IDE ウィンドウに、謎の行が表示されます: username:~/workspace $ 「username」の代わりに、(登録データに基づいて) 自動的に生成された名前が表示されます。ターミナル ウィンドウをクリックし、 update50 「Enter を押してください」と入力します。このコマンドはシステムに更新を要求します。インストールプロセスを説明する行がターミナルに表示されます。「アップデートが完了しました」と表示されるまで、CS50 IDE を閉じないでください。この後、デフォルトの行、つまりあなたの名前が表示された行が再び表示されます。
IDE での作業
ファイルを保存するフォルダーを作成しましょう。CS50 IDEの左上隅にある~/workspace (ルート ディレクトリ)を右クリックし、[新しいフォルダー]を選択します。フォルダーpset1 の名前を変更します(名前のスペルを間違えた場合は、フォルダーを右クリックして[名前の変更]を選択します)。 次に、 pset1フォルダー を右クリックし、[新しいファイル]を選択します。untilted ファイルが表示されるので、名前をhello.txtに変更しましょう。 hello.txt をダブルクリックします。CS50 IDE では、新しいタブと右側に入力できるフィールドが表示されます。これを行った場合は、タブ上のファイル名の前に表示されるアスタリスク (*) 記号に注意してください。これは、ファイルに変更が加えられたものの、保存されていないことを示します。 [*ファイル] > [保存]に移動するか、 command + S (Apple マシンの場合) またはCtrl + S (PC の場合)を使用して、 ファイルを保存します。アスタリスクが消えるはずです。ファイルがあるべき場所にあるかどうかを確認してみましょう。コマンドラインを使用してこれを実行しましょう。ここで慣れてみましょう :)。前と同様、ターミナル内のアクティブな行は次のようになります。 ワークスペース - 現在の作業ディレクトリ (作業環境で開かれているディレクトリ)。チルダ (~) はルート ディレクトリを示します (ワークスペースはその中にあります)。ターミナルのワークスペースは、CS50 IDE の左上隅にある ~/workspace アイコンと同じであることに注意してください。練習しましょう。ターミナル内の任意の場所をクリックし、コマンド ラインを入力し て Enter キーを押します。これら 2 つの小文字 (「リスト」の略) を使用すると、現在のワークスペース ディレクトリ内にあるファイルとフォルダーのリストが表示されます。特に、作成したpset1 が表示されます。次に、コマンドを使用してフォルダーを開いてみましょう。cd ( ディレクトリ 変更) コマンドは、アクティブ ディレクトリを変更します。この例では、 アクティブ ラインが に変更されました。 これにより、現在そのディレクトリにいることが確認されます (この行は、「I am in pset1 inside the workspace (ワークスペース内の pset1 にいます)」を表します)フォルダー (ルート フォルダー内にあり、 ~" で示されます) を入力します。 ファイルhello.txtが表示されます。ターミナルで名前をクリックしても、何も起こりません。これはテキストであり、アクティブなメッセージは表示されません。 cd コマンド自体だけを記述し 、引数 (つまり、コマンドが移動するフォルダーの名前) を指定しない場合は、コマンドが返されます。デフォルトのルート ディレクトリに移動すると、アクティブな行に次の図が表示されます。 フォルダ pset1 に戻るには、ダイヤルします。 cs50 ide フォルダーの名前を変更cs50アイデア講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 1username:~/workspace $lscd pset1cd ~/workspace/pset1~/pset1username:~/workspace/pset1 $~/workspace/pset1lscdusername:~ $cd workspace そして Enter を押します。次に、 cd pset1 もう一度入力します。これら 2 つのコマンドを、より本格的な 1 つのコマンドに置き換えることもできます。 cd workspace/pset1
こんにちはC!
ついにこの瞬間がやって来ました!プログラミングを始めましょう。IDE の pset1 フォルダー内にhello.cというファイルを作成し(拡張子が必要です)、それを新しいタブで開きます (前の段落でこれを行う方法を覚えていると思います)。 重要!文字は小文字である必要があり、Linux では大文字と小文字が区別されます。Hello.c と hello.c は別のファイルです。CS50 IDE ウィンドウの右側に、以下に表示されているものとまったく同じテキストを入力します。はい、コピーすることもできますが、入力した方が便利です。 CS50 IDE には構文強調表示があるため、文字の色が異なります。読みやすくするために、テキストのブロックを色で強調表示します。色はファイル自体には保存されず、IDE でのみ表示されます。これらが存在する場合、IDE は C を認識し、ファイル拡張子 (*.c) で C であることが示されています。同じファイルに hello.txt という名前を付けた場合、テキストは 1 色になります。すべてを例のように正確に入力していることを確認してください。そうしないと、最初のバグに遭遇することになります =)。もう一度、小文字と大文字の違いに注意してください。\n 文字はカーソルを次の行に移動し、次に入力されたテキストはプログラムの出力と結合しません。そうそう、セミコロン (;) を忘れないでください。これはプログラム ステートメントの重要な区切り文字であり、C はこれなしでは動作しません。[ファイル] > [保存] (またはコマンドキーまたは Ctrl キー)をクリックします。ファイル名の前にあるアスタリスクが消えていることに気づきましたか? 「はい」の場合、変更は保存されています。コードの下のターミナル ウィンドウ内の任意の場所をクリックし、~/workspace/pset1内にいることを確認します(そうでない場合は、cd キーを押しながらクリックして Enter キーを押し、次に cd workspace/pset1 を押して再度 Enter キーを押します)。アクティブな行は次のようになります。 hello.cファイルがあるべき場所に正確に存在すること を確認しましょう。と入力し て Enter キーを押します。hello.c も見えますか? そうでない場合は、いくつかの手順に戻り、目的のディレクトリにファイルを再度作成します。... さて、厳粛な瞬間がやって来ます。私たちは指を交差させて...入力します。 そして指を交差させたまま Enter キーを押します。まさに「こんにちは」ではなく「こんにちは」です。このアクションの後に目の前に表示されるのが、前の行とまったく同じように見える 2 番目のアクティブな行だけであれば、すべてが機能しています。ソース コードはマシン コードまたはオブジェクト コード (つまり、0 と 1 の順序) に変換されています。これで、このコードを実行できるようになります (つまり、プログラムを実行できます!)。これを行うには、 コマンド ラインに次のように入力し、Enter キーを押します。「」で囲まれたテキストを変更しなかった場合は、次 のようになります。 コマンドを入力して Enter キーを押すと、hello.c および hello.txt とともに新しい hello ファイルが表示されます。最初の hello には、名前の後にアスタリスクが付いている必要があります。これは、これが実行可能ファイル、つまりプログラムを起動するファイルであることを示します。 #include int main(void) { printf("hello, world\n"); } username:~/workspace/pset1 $lsmake hello./hellohello, worldls
バグ?
make コマンドの後にエラーが表示された場合は、最初のデバッグを行ってください。「宣言予定」などの表記がある場合は、どこかにタイプミスがあったことを意味します。上記のコードをもう一度確認してください。すべての詳細に十分注意してください。 注意!エラーの説明は英語で提供されます。不明な場合は、検索エンジンや Google 翻訳を使用するか、コメントで質問してください。エラーを修正したら、 [ファイル] > [保存] (またはコマンドキーまたは Ctrl キーを押しながら)を使用してコードを保存することを忘れないでください。ターミナル ウィンドウの内側をもう一度クリックして、次のように入力します make hello (~ にいることを確認してください) /workspace/pset1 が最初)。エラーがなくなったら、コマンドを入力してプログラムを実行します。 ./hello 理論的には、「print」を命令する printf 演算子の引用符で囲まれた貴重なフレーズが目の前に表示されるはずです。ターミナル ウィンドウが小さすぎると思われる場合は、hello.c の横にある丸で囲まれたプラス (+) アイコンをクリックします。
正しさのチェック
check50 アプリケーションは CS50 IDE に組み込まれています。コマンドラインから動作し、一部のプログラムのエラーをチェックします。まだそこにいない場合は、ターミナルでコマンドを実行して ~/workspace/pset1 ディレクトリに移動します。 cd ~/workspace/pset1 実行すると、 ls 少なくとも hello.c ファイルが表示されます。ファイル名が、Hello.c や hello.C などではなく、次のようになっていることを確認してください。ファイルの名前を変更するには、コマンドの mv source destination ソース (現在のファイル名)、宛先 (新しいファイル名) を実行します。mv (英語の move から) は名前変更ユーティリティです。ファイルに誤って Hello.c という名前を付けた場合は、次の行を入力します。 mv Hello.c hello.c ファイルの名前が hello.c であることを確認したら、check50 チェック プログラムを呼び出しましょう。2015.fall.pset1.hello は、「hello world」問題の一意の識別子であることに注意してください。check50 2015.fall.pset1.hello hello.c プログラムが正しく実行されると、次のメッセージが表示されます。 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 2 緑色のスマイリーフェイスはテストに合格したことを意味します。check50 の出力の下部にも URL が表示されますが、これは従業員のみを対象としています (ただし、興味がある場合は確認してください)。check50 は、hello.c ファイルが存在するかどうか、hello.c がコンパイルされるかどうか、アプリケーションが「hello, world\n」という行を生成するかどうかの 3 つのテストを実行します。悲しい赤い絵文字が表示された場合は、バグがあることを意味します。 :( hello.c exists \ expected hello.c to exist :| hello.c compiles \ can't check until a frown turns upside down :| prints "hello, world\n" \ can't check until a frown turns upside down ここで、check50 は hello.c を見つけられませんでした。赤いスマイリーは、名前を間違えたか、ファイルを間違った場所にアップロードしたことを示しています。黄色の「中立」絵文字は、テストが実行されなかったことを意味します。また、プログラムがチェックする必要のあるファイルを見つけられない場合、どこから始めればよいのでしょうか? printf() 関数が出力するテキストを変更した場合にポップアップする別のオプションを次に示します。 :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 は、hello, world\n という行が予期されていたが、別のものが表示されたことを報告します。check50 は、コース完了のポイントをカウントするのではなく、課題の結果が予想と異なるかどうかをチェックします。また、コース内のタスクの正しさを確認する前に、これを検証することができます (その方法については後で説明します)。
Cの基礎: Scratchとの比較
Scratch と C の Hello world:
講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 3 #include int main(void) { printf("hello, world\n"); }
  • 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 4は、スプライトの「単語」を Scratch の漫画の吹き出しに印刷する関数を表します。C には、漫画を除いて同じことを行う printf 関数があります。
  • main - 英語で「メイン」。プログラムへのエントリーポイント。と同じ講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 5
終わりのないサイクル
講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 6 C に翻訳すると、 while (true) { printf("hello, world\n"); } while (true) は同じことを行います。値が true (ブール式「true」または「one」) である間 (while)、ループは処理を続けます。このループは無限に実行されます。
画面上にフレーズを10回表示するループ
スクラッチ 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 7 C for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i はカウンター変数であり、その値はインクリメント演算子 i++ によって変更され、ループの反復ごとに 1 ずつ増加します。最初に、代入演算子 = を使用して i に値 0 が割り当てられます。 注意! Java と同様、C では等価性は == (代入演算子 =) で表されます。つまり、a = 5 は変数 a に値 5 が割り当てられていることを意味し、(a= =5) はブローニュ式を意味します (a が 5 に等しい場合、式は true、等しくない場合は false)。 。 i が 9 に「成長」すると、ループは停止します。計算は簡単で、ループは 10 回実行されます。したがって、何かを特定の回数繰り返す必要がある場合は、C で for ループ (int i = 0; i < 10; i++) を定義します。 別の例: 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 8 同じものを C に翻訳します。 int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • カウンタは値を C と Scratch に保存します。C では、 の代わりに int counter = 0 を設定します講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 9
  • 明確にするために、変数の型を int としてマークします。i は整数です (英語の integer、整数に由来します)。
  • printf の 4 行目で使用する %i は、プレースホルダーをカウンタ変数の値に置き換えるよう printf に指示するのと同じように、10 進整数を出力するように指示するプレースホルダーです。
ブール式
講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 10 それと同じです (x < y) ((x < y) && (y < z))
条件
講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 11 そして、「クソ」に相当するもの: 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 12 最初の理解できないフレーズはどうでしょうか? 詳細については、「ライブラリ」セクションで後述します。 #include
条件文
これらの人は、ある条件 (論理式、「はい」か「いいえ」でしか答えられない質問) が真かどうかをチェックし、真であれば、この条件に関連付けられたいくつかのアクションを実行します。人生の例: 雨が降っていて (雨が降っていると仮定して)、私が外にいる場合 (雨が降っているときは外にいる)、私は傘を開きます。 if (condition) { //исполнить, если meaning истинно } より複雑なオプション: 条件が満たされている場合はアクションを実行し、条件が満たされていない場合は別のアクションを実行します。 if (condition) { //выполнить действие } else { //выполнить другое действие, если condition ложно } 例: 18 歳以上の場合は、アクセスを承認します。それ以下の場合は承認しません。 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 12
選択演算子
switch (n) { case const1: // если n equals const1, выполнить break; // condition совершилось — выйти из выбора case const2: // если n equals const2, выполнить break; ... default: // если n не equals ни одной из констант, выполнить break; } 例: n = 50 の場合、「CS50 はコンピュータ サイエンス入門 I」を出力します。n = 51 の場合、「CS51 はコンピュータ サイエンス入門 II」を出力します。それ以外の場合は、「申し訳ありませんが、そのクラスには詳しくありません!」を出力します。 switch (n) { case 50: printf("CS50 is Introduction to Computer Science I\n"); break; case 51: printf("CS51 is Introduction to Computer Science II\n"); break; default: printf("Sorry, I'm not familiar with that class!\n"); break; }
サイクル
while: 条件をチェックし、条件が true の間アクションを実行します。 while (condition) { // выполнять, пока истина } do/while は、最初は条件をチェックせずにアクションを実行し、その後は条件のチェックのみを行うという点で異なります。条件が true の場合、条件が false になるまでアクションを繰り返します。 do { ) // выполнять, пока истина } while (condition); for ループはアクションを指定された回数繰り返します。 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 13 ループは相互にネストできます。この場合、外側のループの各ステップで、内側のループが完全に実行されます。 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 14
C の基本的なデータ型
C の基本的なデータ型
図書館C
おそらく、C プログラムの最初の行が何を意味するのか、つまり その役割は何なのか、それなしで実行できるのか、ということをすでに疑問に思ったことがあるでしょう。#include 行は非常に重要な役割を果たします。すでに書き込まれたコードのライブラリをプログラムに含めます。接続されたライブラリの名前は山括弧 (<>) で囲まれ、拡張子 (.h) が付きます。ライブラリがなければ、たとえ最も基本的なアクションであっても、毎回何度も繰り返し記述する必要があります。つながった図書館#include 入出力関数が含まれています。これにより、printf() 関数を使用して画面に出力できるようになります。つまり、 #include 行を記述していなかった場合 ただし、プログラム本体に printf() 関数を残したままにしておくと、実行しようとするとエラーが発生します。このライブラリがないとコンパイラは printf() が何であるかを認識できないためです。標準ライブラリがあり、それらは言語の語彙を構成します。printf() 関数はコンピュータには組み込まれていませんが、標準 C ライブラリに含まれています (つまり、プログラマが以前にこの関数を作成し、ライブラリに含めていました)。これで、他の人も車輪を再発明することなくそれを使用できるようになります。コンパイラがそれを「理解」できるように、接続します。 。CS50 プロセスでは他にも標準ライブラリが使用されます。たとえば、文字列のライブラリ。文字列を使用した操作 (長さの決定、加算など) が記述されます。他の一般的なプログラミング言語と比較すると、標準 C ライブラリの数は非常に少ないです。ただし、自己作成された、より高度に専門化されたライブラリもあります。はい、図書館です CS50 の学生向けに特別に作成されました。 ここで重要な点に注意してください。優れた開発者は、プログラムを作成し、独自のコードを使用して問題を解決することに加えて、もう 1 つの重要なスキルを持っています。それは、すでに作成されたツールの知識と、それらを使用して (他の人のライブラリを) 使用する能力です。 「車輪」の再発明に時間を無駄にしないために。したがって、よくある面倒な問題や複雑な問題を解決している途中にある場合は、「その解決策は他の誰かが書いたのか?」という質問を自問することを学びましょう。これが当てはまる可能性は高く、この関数は既存のライブラリで見つけることができます。技術用語で言うと、ライブラリとは、リンカを使用してオブジェクト ファイルのコレクションを結合することによって生成されるバイナリ ファイルです。オブジェクト ファイルは、アプリケーションをコンパイルするときに取得される拡張子 (*.o) が付いたファイルです。
C ライブラリの構造
Когда программист пишет библиотеку, code распределяется по двум типам файлов — заголовочный файл (header, расширение *.h) и файл реализации (implementation, расширение *.c). Заголовочный файл содержит code, описывающий ресурсы библиотеки, которые вы можете использовать. То есть описания переменных, функций, структур, типов и прочее. Если вам интересно, что содержит та or иная библиотека, нужно заглянуть именно в заголовочный файл. В терминале CS50 IDE (и других средах Linux) вы можете вызвать приложение less для просмотра файлов и открыть с его помощью интересующую вас библиотеку: less /usr/include/stdio.h Файл откроется прямо в терминале. Правда, для новичков он будет очень трудночитаемым. 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 15 Whatбы выйти из less, нажмите q на клавиатуре. Заголовочный файл не содержит code функций, что служит примером очень важного понятия — сокрытия данных or инкапсуляции. Пользователю системы незачем знать «внутренности» библиотек, ему достаточно, чтобы она работала. Если вы прошерстите stdio.h, то не найдете там реализации printf(), хотя How её использовать, вы уже знаете. Это сделано для того, чтобы защитить данные от вмешательства, которое порой может плохо отразиться на системе. Так, если кто-то изменит реализацию функции printf() в библиотеке, это отразится на всех тех программах, которые её используют. Любознательным будет интересно, где спрятана реализация. Согласно конвенции (соглашения, принятые в мире программирования) такой code хранят в файле с расширением (*.c). После компиляции библиотеки на основе двух файлов с одинаковым именем, но разным расширением создается an objectный файл, который собран так, чтобы создать файл с двоичным codeом библиотеки. 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 16 Author библиотеки передает программисту, который хочет её использовать, два file — с двоичным codeом, а также заголовочный файл. Таким образом, файл с исходным codeом программисту не нужен. Точнее, он может быть нужен, если программист хочет что-то поменять в самой библиотеке и перекомпorровать её под собственные нужды. Whatбы воспользоваться функциями библиотеки в своей программе нужно проделать следующее: 1. Включить заголовочный файл в программу с помощью строки #include В случае стандартных библиотек достаточно указать Name библиотеки в угловых скобках: #include <Name_библиотеки.h> Если библиотека, которую вы хотите подключить, лежит в той же папке, что и ваша программа, подключайте её следующим образом: #include “Name_библиотеки.h” 2.Присоединить бинарный файл для компиляции. Это очень важный шаг, поскольку, How мы говорor выше, заголовочный файл не содержит реализации элементов библиотеки. Whatбы это сделать, нужно вызвать компилятор clang с флагом –l и идущим непосредственно за ним названием библиотеки. Например, компонуем библиотеку cs50: clang hello –lcs50 Clang — один из компиляторов. Для компиляции можно также использовать уже знакомую вам программу make. По сути, она вызывает clang с определенными аргументами командной строки.
И снова Hello C: разбор синтаксиса простейших программ
Директива #include подключает библиотеку ввода/вывода . Программы в C состоят из функций, а те — из операторов и переменных. Функция — это кусок codeа, в котором уже есть or подаются Howие-то данные, а Howие-то данные получают в результате её исполнения. Фигурные скобки { } ограничивают тело функции — описание того, что она должна делать. printf() из стандартной библиотеки stdio выводит любую строку на экран. Строки заключаются в двойные кавычки, а символ “\n” означает перевод курсора на новую строку. Пример: функция «посчитать квадрат целого числа». Передаем функции данные, в нашем случае — число, которое нужно возвести в квадрат. Затем в ней прописывается алгоритм умножения числа на самое себя, и результат этого умножения она выдает на выходе. int sqr(int a) { return a*a; } int sqr(int a) — название функции. В скобках — её аргумент a, это то, что подается на вход функции. Это How переменная в уравнении. То есть, если мы хотим узнать квадрат числа 5, то мы вызовем нашу функцию в виде sqr(5) и получим результат 25. int — тип данных (от англ. integer — целые числа). Наша функция написана так, что мы не можем вызвать её с аргументом a = 5.5. Такая попытка выдаст ошибку, поскольку 5.5 — число дробное, а наше число должно быть целым. int перед именем функции означает тип, который должна эта функция возвращать. Он не обязательно совпадает с типом аргумента. Пример: функция, которая отнимает от целого числа 0.5: double bit_less(int a) { double b; b = a – 0.5; return b; } int main (void) — название главной функции. В одной программе может быть много функций, но, чтобы начать её выполнять, нужна функция под названием main. Слово void в скобках означает, что у этой функции нет аргументов. Внимание! main всегда возвращает int, но return для неё не обязателен. Пример функции не возвращающей значения: void sayhello(void) { printf(“hello everyone!\n”); } При вызове функции в главной программе, она выведет приветствие. Давайте напишем одну программу, в которой будет несколько функций. Тех, что мы уже создали выше. Две созданные нами функции вызовем через главную функцию main(). В C, How и любом языке, есть такой элемент, How комментарий or примечание в коле программы, предназначенное не для компьютера, а для понимания людей. Например, описание, что именно делает code. Компилятор комментариев не видит. Комментирование программ — очень важный момент, поскольку порой разобраться в чужом (и даже своем) codeе очень сложно. //пример однострочного комментария /** а это – многострочного **/ #include //функция возведения в квадрат числа a int sqr(int a) { return a*a; } //выводит приветствие void test(void) { printf ("hello everyone!\n"); } //главная функция int main(void) { test(); printf("%d\n", sqr(5)); } Почти всё, что есть в этой программе вы уже видели. Две функции — возведения в квадрат и приветствия и главная функция main, где мы последовательно вызываем эти две функции. В результате выполнения программы у нас сначала выведется приветствие, на следующей строке — квадрат 5. Обратите внимание, функция test() вызывается с пустыми скобками, потому что её аргументы определены How void.
Еще немного о вводе/выводе в C
Вы, наверное, уже успели заметить странные символы %d и %f в скобках оператора printf. Дело в том, что функция printf выводит данные в следующем обобщенном виде: рrintf ("управляющая строка", аргумент1, аргумент2,...); Управляющая строка содержит компоненты трех типов:
  • символы, которые выводятся на экран дисплея;
  • спецификаторы преобразования, которые вызывают вывод на экран очередного аргумента из последующего списка;
  • управляющие символьные константы.
Спецификатор преобразования начинается со знака % и заканчивается символом, задающим преобразование. Некоторые из таких символов:
  • с: meaningм аргумента является символ;
  • d or i: десятичное целое число;
  • f: десятичное число с плавающей точкой;
  • s: строка символов.
То есть, %d означает, что на экране появится целое десятичное, а %f — десятичное с плавающей запятой. What если нам нужно, чтобы пользователь ввёл данные с клавиатуры? Для этого можно использовать функцию scanf( ), прототип которой также лежит в библиотеке stdio. Whatбы считать с экрана вещественное число, в программе нужно написать строку scanf("%d", &a); Давайте перепишем нашу программу так, чтобы пользователь сам вводил число, которое нужно возвести в квадрат. 講義 CS50 の追加資料: 第 1 週 (講義 3 および 4) - 17
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION