CS50x学習メモ Week0: Scratch

ハーバード大のコンピュータサイエンスコース「CS50x」を勉強したメモをもとに、Geminiに要約させたものを一部推敲して作成しました。

コンピュータの言葉:理解と表現

文字

コンピュータは2進法で情報を処理します。文字は、ASCIIコードと呼ばれる8ビット(1バイト)の2進数で表現されます。例えば、「72 73 33」は「H I !」となります。

Unicodeは、ASCIIコードを拡張した文字コード体系です。1~3バイトのいずれかで表現し、より多くの文字や記号を扱えます。

色は、RGBと呼ばれる3つの要素で表現されます。それぞれ赤、緑、青の光の強さを8ビット(1バイト)で表し、24ビット(3バイト)で1ピクセルの色を表現します。

情報の圧縮

情報を効率的に保存・伝送するために、圧縮技術が使われます。

  • lossy: 情報の一部を捨てて圧縮する方式。MPEG4など。

  • lossless: 情報を損失なく圧縮する方式。

アルゴリズム

アルゴリズムは、問題を解決するための手順です。

  • 分割統治法: 問題を繰り返し分割し、小さな問題を解くことで全体を解く方法。計算量はlogで、2倍の問題を解くのにもう1回分割するだけで良い。

プログラミング

  • 疑似コード: プログラミング言語に縛られない記述方法。予想外なケースを考慮するのに役立つ。

  • スクラッチ: 視覚的なプログラミング言語。出力が次の入力になるなど、複雑な処理を表現できる。

  • 抽象化: 処理の詳細を隠蔽し、必要な部分だけを記述する方法。コードの読みやすさ、メンテ性、問題解決に役立つ。

感想

問題解決と抽象化は、プログラミングだけでなく、様々な場面で役立つ考え方だと感じました。


参考資料


この記事が気に入ったらサポートをしてみませんか?