さいしょに
制御構造
制御構造は、プログラムがどの命令を、いつ、どのような順序で実行するかを決定する、簡単に言えば、プログラムの流れを制御するための文法やルールのことです。
制御構造の3つの基本要素
どんなに複雑なプログラムでも、基本的に以下の3つの要素の組み合わせで構成されています。
1. 順次実行 (Sequence)
- 概念: 命令を上から下へ、書かれた順序通りに実行する、最も基本的な流れです。
- 例:
- 変数Aに10を入れる。
- 変数Bに20を入れる。
- AとBを足して結果を表示する。
- 役割: 処理の基本的な流れを作ります。
2. 条件分岐 (Selection/Conditional)
- 概念: 条件が満たされているかどうか(真か偽か)によって、実行する処理を分ける仕組みです。
- 例:
If...Then...Else
(もし〜なら、そうでなければ)- 「もし時間が夜なら、画面をダークモードにする。さもなくば、ライトモードにする。」
- 役割: プログラムに「判断」の能力を与え、状況に応じた柔軟な対応を可能にします。
3. 繰り返し (Iteration/Loop)
- 概念: 同じ処理を指定された回数、または特定の条件が満たされるまで、何度も繰り返す仕組みです。
- 例:
For
ループ (〇回繰り返す)While
ループ (〜の間繰り返す)- 「データが100個あるので、全てのデータに対して合計を計算する処理を100回繰り返す。」
- 役割: 定型的な作業を自動化し、コードの記述量を減らし、処理効率を向上させます。
制御構造の重要性
コンピュータは順序立てて指示されないと何もできません。制御構造がなければ、プログラムはただ単調に命令を順番に実行するだけで、以下のようなことが不可能になります。
- 複雑な処理: 100個のデータ処理をするのに、100回同じコードを書く必要が出てしまいます(繰り返しがない場合)。
- 柔軟な対応: ユーザーが入力した値が正しいかどうかをチェックしたり、エラーが起きたときに処理を止めたりする判断ができなくなります(条件分岐がない場合)。
制御構造は、単なる計算機を賢く動くプログラムに変えるために不可欠な、プログラミングの「思考様式」なのです。
アルゴリズムの設計
制御構造(順次実行、条件分岐、繰り返し)をどう組み合わせるかを考えるのが、プログラミングにおける実践的な思考プロセス。
実践的な思考ステップ
ステップ 1: 順次実行(処理のブロック化)
まず、目標達成までの道のりを、順番に実行すべき小さなタスクの連続として分解します。これは「順次実行」の設計です。
分解例:①(順次)プログラムに必要なデータ(ファイルや入力)を読み込む。
②(順次)主要な計算や処理を実行する。
③(順次)結果を保存または表示する。
ステップ 2: 繰り返し(定型作業の自動化)
次に、ステップ1で定義したタスクの中に、同じことを何度も行う必要がある部分がないかを見つけます。
繰り返しを適用する例:
・「100行のデータをすべて処理する」 → For
ループ(回数を指定した繰り返し)
・「ファイルの最後までデータがある限り読み込む」 → While
ループ(条件を満たす限り繰り返す)
ステップ 3: 条件分岐(判断と例外処理の導入)
最後に、プログラムの実行中に判断が必要な箇所や、問題が起こりそうな箇所を見つけ、「条件分岐」を組み込みます。
条件分岐を適用する例:
判断: 「もしデータの値が特定のしきい値(例: 50)を超えていたら、特別なフラグを立てる。」
例外処理: 「もしファイルが見つからなかったら、エラーメッセージを出して処理を中断する。」
入力チェック: 「もしユーザーの入力が無効(例: 数字の代わりに文字)であれば、再入力を求める。」
アルゴリズム設計の基本と実践的な設計の考え方
アルゴリズム設計の基本
1. 「何」を「どう」するかを決める
アルゴリズムは、以下の3つの要素で構成されます。
①入力 (Input): 解決したい問題に必要なデータ。(例: 料理の材料)
②手順 (Process/Step): 入力データを使って、目標を達成するために実行する制御構造(順次実行、条件分岐、繰り返し)の組み合わせ。(例: 材料を切る、炒める、味付けする)
③出力 (Output): 手順を実行した結果得られるもの。(例: 完成した料理)
2. 設計が目指す2つの目標
良いアルゴリズムを設計する際に重要なのは、「正しさ」と「効率」です。
正しさ (Correctness):どんな入力データに対しても、常に正しい出力(結果)を返すこと。これが最も重要です。
効率 (Efficiency):処理を完了するために必要な時間(計算量)とメモリ(使用資源)をできるだけ少なくすること。
実践的な設計の考え方
プログラムの目標(例: 「Excelのデータの中から、最も売上が高い商品を見つけ出す」)を達成するために、以下のステップでアルゴリズムを設計します。
1. 問題の分解と抽象化 (Decomposition):複雑な問題を、単純な小さな問題に分割します。
例: 「売上が高い商品を見つける」
分解:
①Excelファイルを開き、商品データ(入力)をメモリに読み込む。
②読み込んだデータから、売上(数値)だけを比較する。
③最も大きな数値(最大値)を特定する。
④その数値に対応する商品名を出力する。
2. 制御構造の適用 (Applying Control Structures):分解した各ステップに、順次実行、条件分岐、繰り返しを適用します。
例: 「最大値の特定」のステップ
①(順次実行) 最初の商品の売上を「仮の最大値」として設定する。
②(繰り返し) 2番目の商品から最後のデータまで、一つずつ商品データをチェックする。
③(条件分岐) もしチェックしている商品の売上が「仮の最大値」より大きければ、
④(順次実行) 「仮の最大値」をその新しい売上に更新する。
3. 最適な手法の選択 (Optimization):目標達成の方法が複数ある場合、どの方法が最も速く、資源を節約できるか(効率が良いか)を評価し、最適な手法を選びます。
例: データを並べ替えてから最大値を探す方が速いか、それとも並べ替えずに一つずつ比較する方が速いか、といった検討です。
アルゴリズム設計は、単にコードを書くことではなく、どうやったらコンピュータに無駄なく、確実に問題を解決させられるかという論理的な思考です。
エディタ
文字を打ち込んだり、編集したりするためのソフト
普段パソコンで文章を書いたりメモを取ったりするときに使うソフト。
例えば、Windowsの「メモ帳」やMacの「テキストエディット」などが代表的なエディタです。
エディタは、以下のようなことができます。
文字を打つ(入力する): キーボードで文字を打ち込んで、画面に表示させることができます。
文字を編集する: 打ち込んだ文字を消したり、コピーしたり、貼り付けたり、入れ替えたりすることができます。
文字の保存: 打ち込んだ内容をファイルとして保存することができます。
文字の読み込み: 保存したファイルを読み込んで、以前の続きから作業することができます。
友達にメールを送る、ブログを書く、レポートを作成する、プログラムのコードを書く、ウェブサイトのHTMLを編集するこれらすべて、文字を入力して編集する作業が必要です。エディタがなければ、文字を打ち込むことさえできませんし、間違えた時に修正することもできません。
エディタの種類
シンプルなテキストエディタ:
例: Windowsの「メモ帳」、Macの「テキストエディット」
とてもシンプルで、文字を打つことと保存することに特化しています。文字の装飾(太字にしたり色をつけたり)はできません。主に、書式のない「プレーンテキスト」と呼ばれる文章を扱うのに使われます。
高機能なテキストエディタ:
例: Visual Studio Code (VS Code), Sublime Text, Atom, Sakura Editor, TeraPad
シンプルなエディタに比べて、以下のような便利な機能がたくさんあります。
シンタックスハイライト:プログラミング言語のコードなど、特定のルールに従って書かれた文字に色をつけたりして見やすくしてくれます。
自動補完: 入力途中の単語を予測して表示し、入力を助けてくれます。
Grep機能: 複数のファイルの中から特定の文字を探し出す機能。
プラグイン・拡張機能: 自分の用途に合わせて、機能を追加することができます。
プログラミング、ウェブサイトの作成、マークダウン記法の文章作成など、より専門的な作業に使われます。
ワープロソフト:
例: Microsoft Word, Google ドキュメント
特徴: エディタと少し似ていますが、文字の装飾(フォントの種類、大きさ、色、太字、斜体など)や画像の挿入、表の作成など、見た目を整えることに特化しています。
用途: レポート、企画書、手紙など、印刷したり、人に見せるための文書作成に使われます。厳密にはエディタとは区別されることが多いですが、文字を編集するという意味では広義のエディタと言えるでしょう。
開発環境
コンピューターのプログラム(ソフトウェア)を作るための、道具一式が揃った場所
例えば、料理をするためには、包丁や鍋、まな板、コンロ、冷蔵庫などの道具が必要ですし、それらを置くためのキッチンという場所がプログラムを作るには、専用の道具(ソフトウェア)が必要で、それらがうまく連携して使えるように準備された「場所」が「開発環境」なんです。
プログラミングは、単に文字を打ち込むだけではできません。私たちが書いたプログラムのコードは、コンピューターが直接理解できる言葉ではありません。そのため、以下のような様々なプロセスが必要です。
- コードを書く: まずは、プログラミング言語(Python, C++, JavaScriptなど)でプログラムの指示を文字として書きます。
- コンピューターが理解できるようにする: 書いたコードを、コンピューターが実行できる形(機械語)に変換する必要があります。この変換作業を「コンパイル」や「インタープリット」と呼びます。
- プログラムを実行する: 変換されたプログラムを実際に動かして、意図した通りに動くか確認します。
- 間違いを探して直す(デバッグ): プログラムがうまく動かない場合、どこに間違いがあるのかを探し出し、修正します。
これらの作業を効率的に行うために、開発環境が必要になります。
開発環境を構成する主な「道具」
開発環境は、通常いくつかのソフトウェアの組み合わせでできています。
- エディタ(コードエディタ):
- 役割: プログラムのコードを書くためのソフトです。
- 例: Visual Studio Code (VS Code),
- ポイント: 単なるメモ帳ではなく、プログラミングに特化した機能(文字の色分け、自動補完、エラー表示など)が充実しています。
- コンパイラ/インタプリタ:
- 役割: 私たちが書いたプログラミング言語のコードを、コンピューターが理解できる形に変換するソフトです。
- コンパイラ: コードをまとめて変換し、実行可能なファイル(アプリケーションなど)を作り出すタイプ(C++, Javaなど)。
- インタプリタ: コードを一行ずつ読み込みながら、その場で変換して実行するタイプ(Python, JavaScriptなど)。
- 例: Pythonの実行環境、Java Development Kit (JDK), GCC (C/C++用)
- ポイント: プログラミング言語ごとに専用のコンパイラやインタプリタが必要です。
- 役割: 私たちが書いたプログラミング言語のコードを、コンピューターが理解できる形に変換するソフトです。
- デバッガ:
- 役割: プログラムに間違い(バグ)があったときに、その原因を探し出すのを助けてくれるソフトです。
- 例: 各IDEに内蔵されているデバッガ、GDB (C/C++用)
- ポイント: プログラムの実行を途中で止めたり、変数の値を確認したりすることで、問題箇所を特定しやすくなります。
- バージョン管理システム:
- 役割: プログラムのコードの変更履歴を記録し、管理するソフトです。
- 例: Git (GitHub, GitLab, Bitbucketなどと組み合わせて使うことが多い)
- ポイント: 複数人で開発する際に、誰がいつ、どこをどう変更したのかを追跡したり、以前のバージョンに戻したりするのに非常に役立ちます。
- 統合開発環境 (IDE – Integrated Development Environment):
- 役割: 上記のエディタ、コンパイラ/インタプリタ、デバッガなどの様々なツールを一つにまとめた、オールインワンのソフトウェアです。
- 例: IntelliJ IDEA (Java), PyCharm (Python), Xcode (iOS/macOS), Android Studio (Android), Visual Studio (C#, C++, .NET)
- ポイント: 初心者でもこれ一つあれば開発を始めやすいですが、高機能な分、使いこなすのに慣れが必要な場合もあります。VS Codeのように、エディタに機能を追加してIDEのように使えるものもあります。
開発環境は、プログラミングをする上で非常に重要な「土台」です。目的に合わせて適切なツールを選び、それらを組み合わせて効率的にプログラミングができるように整えることが、スムーズな開発への第一歩となります。
HTML
HTMLを始めるための開発環境の作り方
HTMLはプログラミング言語というよりは「マークアップ言語」といって、ウェブページの構造を作るためのものなので、本格的なプログラミング言語に比べて、開発環境を準備するのはすごく簡単です。
- テキストエディタ: HTMLのコードを書くためのソフト
- Webブラウザ: 書いたHTMLのコードがどう表示されるか確認するためのソフト
この2つがあれば、すぐにHTMLを始められます。HTMLを書いて表示してみましょう。
1. 新しいフォルダを作る
まず、HTMLファイルなどを保存するための新しいフォルダをデスクトップなど分かりやすい場所に作りましょう。
2. テキストエディタでフォルダを開く
3. 新しいHTMLファイルを作る
- ファイル名を入力する欄が出てくるので、
○○○○.html
と入力してEnterキーを押します。
必ず最後に.html
をつけてください。
4. HTMLのコードを書いてみる
<!DOCTYPE HTML>
<html lang= "ja">
<head>
<meta charset='utf-8'>
<title>HTMLを書いてみた</title>
<style>body {color: blue;}</style>
</head>
<body style="font-size:40px">
HTMLを書いてみた!
</body>
</html>
解説:
<!DOCTYPE HTML>:HTML5で書かれたことを宣言。
<html lang= “ja”>:ページの言語が「日本語」だと指定しています。
<html>~</html> :HTMLのスタートとエンドを示しています。
<head>~</head> :ここには「ページの設定情報(見えない情報/メタ情報)」をまとめます。
<meta charset=’utf-8′>:文字コードをUTF-8に設定(日本語対応)。
<title>”HTMLを書いてみた”</title>:ブラウザのタブに表示されるタイトル。
<style>body {color: blue;}</style>:bodyのテキストの色を青に設定。
<body style=”font-size:40px”>:フォントサイズを40ピクセル と書いている
<body>~</body> :実際に画面に表示される内容を書きます。
5. ファイルを保存する
書いたコードを保存します。ファイル(F)
> 上書き保存(S)
をクリックするか、Ctrl + S
(Windows) または Command + S
(Mac) のショートカットキーを使います。
6. Webブラウザで表示してみる(Google Chrome使用)
- エクスプローラー(ファイルやフォルダを見るソフト)を開き、先ほど作った フォルダを開きます。
- その中に
というファイルがあるはずです。その ファイルをダブルクリックします。○○○○
.html - すると、自動的にWebブラウザ(Google Chromeなど)が立ち上がり、書いたHTMLが表示される
もし表示されない場合は、
を右クリックして「プログラムから開く」を選び、普段使っているWebブラウザを選択してみてください。○○○○
.html
JavaScript
Python
C++
プログラミング言語
- HTML
- CSS
- JavaScript
- Python
- C++