高校情報Ⅰ プログラミング言語, Pythonで制御構造・リスト(4か月目第3週)

Pythonでインフォマティクス

まなびの目標🎯
・コンピュータが理解できる機械語について理解する。
プログラミング言語の役割や種類について理解する。
・基本となる3つの制御構造順次・分岐・反復)、リスト(配列)Pythonを例に働きや記述方法を学ぶ。
・確認テストで学びを復習!




1. コンピュータが理解できる言葉:機械語

プログラムをコンピュータに実行させるために、その内容をコンピュータに理解させる必要があります。
コンピュータは私たちの言葉をそのまま理解できません!!
コンピュータが唯一理解できるのは、0と1だけのデジタル信号です!これを機械語と呼びます!
「0」は電気がオフの状態、「1」は電気がオンの状態を表し、これらの電気信号のオン/オフの組み合わせによって、コンピュータはさまざまな命令を理解します。

0と1を大量に組み合わせることによって、命令を伝えます。
例:
0100100011000100 ; メモリからデータを読み込む
1000000000100001 ; 2つのデータを足し算する

ですが、、、この0/1の機械語を人間がすぐに作ることはできない!

、、、010111000、、なんのことやら。。

ということで、人間がコンピュータに仕事をさせるために重要なプログラミング言語について書いていきます!

2. 人間が理解しやすい言葉:プログラミング言語

機械語は、人間が作ったり理解したりすることはとっても難しいです。。

そこで、人間がやりたいことを、人間がわかるレベルの言語で形にして、それをコンピューター上で機械語にして、その機械語をコンピュータが理解して、実行させます!

↓↓↓こんなイメージ!!
人間がやりたいアルゴリズム→→→プログラミング言語→→→機械語→→→コンピュータが理解・実行!

ここで活躍しているのがプログラミング言語です💡

■アセンブリ言語:
プログラミング言語の中で、機械語に最も近いレベルにあるのがアセンブリ言語です。
アセンブリ言語は、機械語の0と1の組み合わせを、人間が理解しやすい英数字の略語(ニーモニック)に置き換えたものです。機械語の命令とほぼ1対1で対応しており、コンピュータのCPU(中央処理装置)に直接命令するような感覚でプログラミングができます。
例:
MOV R1, 104 ; メモリの104番地からレジスタR1へデータを移動する(Move)
ADD R1, R2 ; レジスタR1とR2の値を足し算する(Add)

アセンブリ言語は機械語に近い分、コンピュータのハードウェアを細かく制御できるという特徴がありますが、それでも人間が複雑なプログラムを書くのは難しいです。。

機械語とアセンブリ言語は、低水準言語と呼ばれます。

■高水準言語:
アセンブリ言語よりもさらに人間に分かりやすく、普段私たちが使う言葉や数学の数式に近い形で記述できるのが高水準言語です。Python、JavaScript、Java、C言語などがこれにあたります。
高水準言語で書かれたプログラムは、機械語に「翻訳」する特別なソフトウェアが必要になります。この翻訳の仕方の違いによって、大きくコンパイラ言語インタプリタ言語の2種類に分けられます。
ーコンパイラ言語
コンパイラ言語は、プログラムを実行する前に、プログラム全体のソースコードをまとめて機械語に翻訳(コンパイル)してから実行します。一度コンパイルしてしまえば、次回からはその機械語のファイルを直接実行できるため、高速に動作するという特徴があります。
例: C言語、C++、Java

ーインタプリタ言語
インタプリタ言語は、プログラムを1行ずつ(または一部のブロックずつ)機械語に翻訳しながら実行していきます。そのため、書いたコードをすぐに実行して結果を確認できるという特徴があります。
例: Python、JavaScript、Ruby

このように、プログラミング言語は、コンピュータに仕事をさせるための指示を、人間がより簡単に、効率的に書けるように進化してきました。

3. プログラミング言語の種類

たくさんのプログラミング言語があって、どの言語を学べばいいんだろう、、と迷ってしまうかもしれません。
それぞれのプログラミング言語には得意なことや苦手なことがあり、用途によって使い分けられています。

 用途別分類
■Webサイト開発
HTML:Webページの構造を作る言語です。HTMLでは、<p>や<h1>のように<と>で挟まれたタグで文字列を囲むことで、その部分がどんな要素であるかをコンピュータに伝えます。
CSS: Webページの見た目やデザインを整える言語です。HTMLで作られた文書構造に、レイアウトやデザインなどをCSSで指定します。
JavaScript: Webページに動きやインタラクティブ(動的)な要素を加えるための言語です。

■AI・データ分析
Python: シンプルな文法で、AI(人工知能)や機械学習、大量のデータ分析を行うためのライブラリが豊富に揃っています。
R: 統計解析やグラフ作成が得意な言語です。

■組み込みシステム
C言語・C++: 冷蔵庫や洗濯機などの家電製品、自動車、産業機器など、特定の機能を持つ機械(組み込みシステム)の制御プログラムによく使われます。ハードウェアに近い部分を細かく制御できるのが特徴です。

プログラミング言語にもそれぞれ独自の文法(ルール)や書き方があります。
しかしながら、基本的な考え方や構造はどの言語も共通している部分が多く、一度ある言語の考え方を理解すれば、他の言語を学ぶ際にもその知識が役立ちます。

4. プログラミングの基本構造:Python

プログラミングは、大きく分けていくつかの基本的な構造の組み合わせでできています。Pythonを使って、その構造を見ていきましょう。順次構造、分岐構造、反復構造については、先日記事を挙げていますので、参考にしていただければと思います!

高校情報Ⅰ アルゴリズムとプログラミングの基本(4か月目第2週)
まなびの目標🎯・アルゴリズムが問題を解決するための方法や手順であることを理解する。・アルゴリズム表記の流れ図(フローチャート)について理解する。・プログラミングの基本となる3つの制御構造(順次・分岐・反復)を理解する。■目次1. アルゴリズ...

4.1. 順次構造

プログラムが書かれた順番に命令が実行されることを、順次構造と言います。

# Pythonの例:
# 身長と体重からBMIを計算
height = 1.70 # 身長 (メートル) を変数 'height' に代入①
weight = 65   # 体重 (キログラム) を変数 'weight' に代入②
bmi = weight / (height * height)  # BMIを計算して変数 'bmi' に代入③
print("あなたのBMIは", bmi, "です。")  # 計算結果を表示④
#出力結果
あなたのBMIは 22.49134948096886 です。

※#から右は、コメントです。各行の#から右については、pythonにこのまま入力してもコードとしては認識されません。

この例では、まずheightに値が代入①され、次にweightに値が代入②され、その後にBMIの計算③が行われ、最後にその結果が表示④される、というように各行が上から順に実行されます。

4.2. 選択構造

条件によって処理を分けることを、選択構造と言います。

# Pythonの例:
score = 85  # テストの点数を変数 'score' に代入
if score >=60:  # もし score が60以上ならば
    print("合格です!")  #「合格です!」と表示する
else:  # そうでなければ(score が60未満ならば)
    print("残念、不合格です。")  # 「残念、不合格です。」と表示する
# 出力結果
合格です!

ifとelseを使って、scoreが60点以上かそうでないかによって、表示されるメッセージが変わるようになっています。

4.3. 反復構造

同じ処理を何度も繰り返すことを、反復構造と言います。

# Pythonの例:
for i in range(5):  # 'i' を0から4まで(計5回)繰り返す
    print(i, "回目のハロー!")  # 'i' の値と「回目のハロー!」を表示
# 出力結果
0 回目のハロー! 
1 回目のハロー! 
2 回目のハロー! 
3 回目のハロー! 
4 回目のハロー!

forループという書き方を使って、print文が5回繰り返されて実行されます。

5. データをたくさん扱うためのリスト(配列):Python

クラス、あるいは学年のテストの点数を記録するような、たくさんのデータを扱う場合に、
データひとつひとつに異なる変数名(例:score1, score2, score3…)を付けていたら、データの数が増えるほど大変になってしまいます。。

そこで便利なのが配列(リスト)という仕組みです。Pythonでは、配列と同じような働きをするデータ型をリストと呼びます。リストは、複数のデータを順番に並べて格納できるのようなものです。

リストは、[]で囲み、中に格納したいデータをカンマ(,)で区切って記述します。リストに格納された個々のデータを要素と呼びます。

■リストの定義と要素の取りだし

# Pythonの例:
fruits = ["apple", "banana", "cherry"] # 'fruits' というリストに3つの果物の名前を格納
print(fruits[0]) # リストの最初の要素を表示
print(fruits[2]) # リストの3番目の要素を表示
# 出力結果
apple
cherry

💡「fruits[0]」や「fruits[2]」のように、リストの要素を取り出す際に使う数字はインデックスと呼ばれ、最初を0として数え、リストの最初の要素は「0」、2番目の要素は「1」、3番目の要素は「2」…となる点は、重要です!

■リストの操作:追加、変更、削除
後から新しい要素を追加したり、既存の要素を変更したり、不要な要素を削除したりと、さまざまな操作が可能です。

# Pythonの例:
fruits = ["apple", "banana", "cherry"]
print("初期のリスト:", fruits)

fruits.append("orange") # リストの最後に「orange」を追加
print("追加後:", fruits)

fruits[1] = "grape" # インデックス1の要素("banana")を「grape」に変更
print("変更後:", fruits)

fruits.remove("apple") # 特定の要素("apple")を削除する場合
print("削除後:", fruits)
# 出力結果
初期のリスト: ['apple', 'banana', 'cherry']
追加後: ['apple', 'banana', 'cherry', 'orange']
変更後: ['apple', 'grape', 'cherry', 'orange']
削除後: ['grape', 'cherry', 'orange']

Pythonのリストは、複数のデータをまとめて管理し、必要に応じて内容を柔軟に操作できるため、プログラミングにおいて非常に便利な機能です。

Pythonのリストについては、以下の記事にも掲載しています。ご参考にされてください。

Pythonでデータを扱う!リスト, 辞書, グラフ描画matplotlib(情報Ⅰプログラミング④)
Pythonでは、データを扱うためのリストや辞書などの仕組みが用意されています。また、分析したデータをグラフにすることで、見た目にもわかりやすく伝えることができます。今回の記事では、Pythonの基本的なデータ構造と可視化を紹介します!■目...
6. まとめ

・プログラミング言語はコンピュータと会話するためのツールであることが分かりました。
・機械語、アセンブリ言語、高水準言語の関係性について学びました。
・順次、選択、反復、配列といった基本構造をPythonを例に記述方法を学びましたので、実際にコードを書いてみてくださいね!

Pythonの始め方は、別の記事で紹介していますので、参考にされてくださいね。

Pythonの始め方と使い方 (インストール不要のGoogle Colaboratory)(情報Ⅰプログラミング①)
プログラミング言語のPythonはシンプルな文法で書けるため、様々な領域で使われ、多くの研究者やエンジニア、学生など幅広く利用されています。高校情報Ⅰでは、情報社会の問題解決、コミュニケーションと情報デザイン、コンピュータ、情報通信ネットワ...
7. 確認テスト

Q1. コンピュータが唯一直接理解できるデジタル信号は何と呼ばれますか?

  • 機械語
  • 高水準言語
  • アセンブリ言語

正解!正解!

不正解!不正解!

機械語

ヒント:コンピュータが直接理解できるのは、0と1の組み合わせで表現される機械語だけです。

Q2. 人間が普段使う言葉や数式に近い形で記述できるプログラミング言語は何と呼ばれますか?

  • 高水準言語
  • 低水準言語
  • コンパイラ言語

正解!正解!

不正解!不正解!

高水準言語

ヒント:人間が理解しやすいように、普段使う言葉や数式に近い形で記述できるプログラミング言語です。

Q3. Pythonのリストにおいて、リストの各要素の場所を指定するために使われる、0から始まる番号は何と呼ばれますか?

  • 要素
  • 変数
  • インデックス

正解!正解!

不正解!不正解!

インデックス

ヒント:リストの要素を取り出す際に使う、0から始まる番号のことです。

Q4. Webページの構造を定義するために、タグを使って要素を記述する言語は何ですか?

  • C++
  • Python
  • HTML

正解!正解!

不正解!不正解!

HTML

ヒント:Webページの「骨格」や「構造」を作るために使われる言語です。

確認クイズは、いかがでしたでしょうか?今回の学習内容が、皆さんの情報活用能力を高める一助となれば幸いです。閲覧いただき、ありがとうございました!

※本記事 教科書該当範囲

教科書名 該当章
新編情報Ⅰ(東京書籍) 3章 25. プログラムの基本構造1, 26. プログラムの基本構造2, 27. 発展的なプログラム1
最新情報I(実教出版) 第6章 1節 プログラミングの方法, 2節 プログラミングの実践
高校情報ⅠJavaScript(東京書籍) 第6章  31. プログラミングの基本, 32. 配列
高校情報ⅠPython(東京書籍) 第6章  31. プログラミングの基本, 32. 配列

本サイトは、教科書をベースに構成しています。使える「情報Ⅰ」を目指し、毎週月曜日に新しい記事を発信予定です。

高校情報Ⅰ アルゴリズムとプログラミングの基本(4か月目第2週)
まなびの目標🎯・アルゴリズムが問題を解決するための方法や手順であることを理解する。・アルゴリズム表記の流れ図(フローチャート)について理解する。・プログラミングの基本となる3つの制御構造(順次・分岐・反復)を理解する。■目次1. アルゴリズ...
高校情報Ⅰ 時系列分析と回帰分析(4か月目第1週)
まなびの目標🎯・時間と共に変化する時系列データから、時系列分析を行って将来を予測してみよう!・2つの異なるデータの関係性(相関関係)を調べよう!・散布図と回帰直線を使って、データ間の関係を説明しよう!・相関関係と因果関係の重要な違いを理解し...
高校情報Ⅰ 基本統計量とヒストグラム、箱ひげ図(3か月目第4週)
まなびの目標🎯・基本統計量を知ろう!データの全体の傾向をつかむのは大事!・データの中心や散らばりを把握することの重要性を理解しよう!・データの分布を可視化する方法を知ろう!最後、確認クイズもありますので、是非見ていって下さい♬■目次1. 基...

本記事に対し、お気づきの点ございましたらお問い合わせよりご連絡頂けますと幸いです。




 

コメント

タイトルとURLをコピーしました