プログラミングの基礎に関するハーバード大学の講義をまだ視聴していない人は、ここにアクセスしてください: https://javarush.com/quests/QUEST_HARVARD_CS50 =)
導入。CS50 コースの構造
友達!はじめに、CS50 の構造について (または誰にでも) 思い出させます。このコースは12週間続きます。毎週2回の講義のほか、各種セミナーや解説も行われます。講義の準備が整い次第、このような記事を公開していきます。講義の簡単な説明、「ショート」に関するメモと追加情報、実践的な課題の翻訳が含まれます。ゼロウィークの講義では次の問題が取り上げられました。- 2 進数システム。
- アスキー
- アルゴリズムとアルゴリズム的思考
- コンパイラ
- スクラッチ言語
- ブール式
- 条件
- サイクル
- 変数
- 機能
- 配列
- ストリーム
- イベント
- 情報をデジタルで表現する方法を理解します。
- 基本的なソフトウェアの構成と概念を学びます。
- Scratch を使用して、独自のアニメーション、ゲーム、またはインタラクティブなアクティビティを作成します。
- 友達を感動させましょう =)。
CS50 第 0 週 (講義 1-2): メモ
アルゴリズム
すでに講義をご覧になり、アルゴリズムが問題 (さまざまな問題、数学的な問題、または「地下鉄 N 駅に行く方法」) の解決策をステップに分割していることを理解していただけたと思います。さらに、各ステップは有限の時間内に完了する必要があり、ステップ自体も一定数存在する必要があります。また、次のステップは前のステップに依存します。アルゴリズムの詳細については、たとえば、こちらを参照してください。英語がわかる方は、David Malan による素晴らしい TED アニメーションをご覧ください: https://youtu.be/6hfOvs8pY1k ただし、一般に、ビデオ内の情報は講義内の情報と同じです =)。二進法
指は 10 本あり、システムは 10 進法です。つまり、数値 0、1、2、3、4、5、6、7、8、9 を使用して、どんなに大きな数値でも表すことができます。その数値が数値内のどこに含まれるかによって、それは次のことを意味します。異なるもの: この数字が最後であれば、それは単位の位にあり、最後から 2 番目の数字は十の位にあり、さらに左にあるものは百の位にあります。基本的に、任意の数値は、各桁を 10 の一定乗倍した合計として書くことができます。単位の場合はゼロです。たとえば、1573 = 3*10 0 + 7*10 1 +5*10 2 +1*10 3です。桁に乗算される数値は、記数体系の基数と呼ばれます。10 進法の場合、底は論理的に 10 です。コンピュータには指がありませんが、条件付きで「電流が流れている」と「電流が流れていない」、つまり 0 と 1 の 2 つの状態があります。したがって、コンピュータ メモリ内のすべての数値 (および一般的な情報) は、0 と 1 の 2 桁のみで構成されます。10 進数体系の場合と同様、それらの位置が桁を示します。ここでのみ、数値を 10 の累乗ではなく 2 の累乗を乗算した桁の合計に分解できます。2 進数の 0 = 0 2 進数の 1 = 1 2 進数の 2 = 10 7 10 =111 2 2 進数から 10 進数への変換を学びます。おそらくこれがどのように行われるかをすでに理解していると思います。単純に、右端から数字の桁を取得し、その桁に対応する底を乗算し、各桁ですべてを加算します。例: 2 進数 101101 に相当する 10 進数を見つけてみましょう2 右端のゼロ = 1*2 0 次のゼロ = 0*2 1 右から 3 番目のゼロ = 1*2 2 4 番目のゼロ = 1*2 3 .. . など 101101 2 = 1*2 0 + 0*2 1 + 1*2 2 + 1*2 3 + 0*2 4 + 1*2 5 = 1 + 0 + 4 + 8 + 0 + 32 = 45 10 8 個の電球が一列に並んでいると想像してください。それぞれに独自のスイッチがあります。それぞれの電球は放電です。想像してみてください。最初の講義 (そのようなデバイスがあります) を思い出してください。または、ここにあるウィジェットがあります: http://cdn.cs50.net/2016/x/psets/0/pset0/bulbs.html Playそれを使って、バイナリシステムを「感じる」練習をしてください。10 進数から 2 進数への変換。ここでも、本質を理解していれば、すべてが非常に簡単です。ここには 57 10という数字があります。これを 2 進法に変換するには、この数値を超えない 2 の最大累乗を決定する必要があります。2 6 = 64。これは明らかに多すぎます。しかし、2 5 = 32 です。これで最上位桁が決まりました。32 10= 100000 2。今、次の桁を探しています。57-32 = 25。25 については、25 を超えない 2 のべき乗を探します。2 4 = 16。これは、次の桁も 1 に等しいことを意味します。32+16 = 48 10 = 110000 2。57 – 48 = 9. 2 3 = 8、これは 9 より小さいです。これは、次の桁も 1 になることを意味します。32 + 16 + 8 = 56 10 = 111000 2 . 57-56 = 1、つまり、残りのべき乗は 2 0だけです。したがって、 57 10 = 111001 2 となります。突然何か不明な点が残った場合は、ウィキブックで詳細を読むことができます。また、英語に堪能な場合は、講義に少し追加したものをここに記載します。アスキー
コンピューターは 0 と 1 のみを理解します。そのメモリーは、上で見たように、スイッチが付いた非常に長い電球の列として表すことができます。私たちはコンピューターで数値を表現する方法をすでに理解しています。残りの情報はどうなるのでしょうか?手紙、絵? 英語のアルファベットが 26 文字あるとします。つまり、理論的には、2 進法でのみ文字を 0 から 25 までの数字で表すことができます。次の疑問が生じます。小文字か大文字かをどうやって理解できるのでしょうか? 句読点についてはどうでしょうか?スペースのような目に見えない記号?つまり、コーディング システムが必要なのです、キャップ!1960 年代には、文字をエンコードするさまざまなスキームが存在しました。統一性の欠如が問題であることが判明し、1963 年に米国規格協会 (ANSI) が ASCII (American Standard Code for Information Interchange) エンコーディング スキームを開発および導入しました。各 ASCII 文字は 7 ビット、または 7 ビットで構成され、それぞれのビットは値 0 または 1 をとります。7 ビットは 2 進数で 0 から 127 までの数値を保持できます。つまり、文字をエンコードするための数値が 128 個あることになります。英語の書き言葉をエンコードするにはこれで十分だと思われますか? 数えてみましょう: az - 26 個のオプション AZ - さらに 26 個 0-9 - 10 ,;:~& およびその他の句読点 - 32 個 そしてもう 1 個のスペース。合計 - 95 文字。残りの 33 個の空のオプションは、改行や復帰などのいわゆる制御文字に使用されます: https://ru.wikipedia.org/wiki/ASCII#/media/File:ASCII_Code_Chart.svg を区別することが重要です。 0 ~ 9 の文字と 0 ~ 9 の数値。文字 0 ~ 9 は ASCII 値 48 ~ 57 で表されます。興味深いことに、これらの ASCII 値の右端の 4 ビットは数値 0 ~ 9 のバイナリ表現であることに注意してください。これにより、ASCII 値と実際の数値の間の変換方法が多少簡略化されます。プログラミングを始めましょう?傷
ということで、スクラッチ。講義ではこのビジュアルプログラミング言語とその基本コマンドについて説明しました。Scratch を自分で試してみるには、リンクをクリックして「参加」をクリックしてください。登録が完了すると、オンラインでプログラミングを始めることができます。はい、ところで、現在、Scratch は部分的にロシア語化されています。ただし、ヘルプは依然として英語です。必要に応じて、講義でデモンストレーションされた学生プロジェクトのコードを再生したり、閲覧したりすることもできます。こちらはピカチュウのペーストリーキャッチ。または、廃棄物をさまざまなコンテナに分別するプロジェクト: https://scratch.mit.edu/projects/71161586/ David と会社は、「自分にはそんな複雑なプロジェクトはできない」と思っていても心配しないでくださいと呼びかけています。このレベルではすでに一定の要件が必要です。スキル 。エクササイズ
-
Scratch で行われるプロセスをより深く理解するために、ここからいくつかのプロジェクトのソース コードをダウンロードできます。遊んで見てください。他の人のコードを学ぶことは非常に役立ちます。これは、あなた自身がまだ成熟していないプログラムの中身を知るための最良の方法の 1 つです。これらのアプリがどのように機能するかを理解し始めると、自信を持って先に進むことができます。
-
今は自分で何かをする時です。楽しみながら、小さなプロジェクトをゼロから実行することが課題です。それはアニメーション、ゲーム、インタラクティブアクションなどです。
- プログラムには少なくとも 2 つのスプライト (文字、画像) が含まれている必要があり、そのうちの 1 つが猫であってはなりません =)。
- 少なくとも 3 つのスクリプト (アクション) が必要です。
- 少なくとも 1 つの条件、1 つのループ、および 1 つの変数を実行する必要があります。
- プログラムには少なくとも 1 つのサウンドが含まれている必要があります。
GO TO FULL VERSION