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回分割するだけで良い。
プログラミング
疑似コード: プログラミング言語に縛られない記述方法。予想外なケースを考慮するのに役立つ。
スクラッチ: 視覚的なプログラミング言語。出力が次の入力になるなど、複雑な処理を表現できる。
抽象化: 処理の詳細を隠蔽し、必要な部分だけを記述する方法。コードの読みやすさ、メンテ性、問題解決に役立つ。
感想
問題解決と抽象化は、プログラミングだけでなく、様々な場面で役立つ考え方だと感じました。
参考資料
CS50x Week0: https://cs50.jp/x/2021/week0/
「UTF-8ってそもそもどういう仕組み?」: https://qiita.com/mume/items/8a12543cf9583849db62
スクラッチプログラミング: https://scratch.mit.edu/
この記事が気に入ったらサポートをしてみませんか?