「学習方法/高校情報」の版間の差分
→『社会と情報』の内容: パリティビットはエラー訂正ではなくエラー検出手法です。類似概念ですがしっかりと区別するようにしましょう。マークアップ誤りを修正。 |
令和三年現在、『社会と情報』・『情報の科学』から『情報I』(必須)・『情報II』(選択)への移行途中で先行実施期間中です。[https://www.mext.go.jp/b_menu/shingi/chukyo/chukyo3/004/siryo/__icsFiles/afieldfile/2016/08/29/1376580_3.pdf 今後の学習指導要領改訂スケジュール]平成28年8月26日 中央教育審議会 教育課程部会 資料3 |
||
1 行 | 1 行 | ||
== この教科について == |
== この教科について == |
||
高校の「情報」教科では、データの圧縮のしくみや、エラー訂正のしくみなど |
高校の「情報」教科では、データの圧縮のしくみや、エラー訂正のしくみなどより高度な内容を学びます。 |
||
単なるマウスの使い方、キーボードの使い方などは中学校卒業までに習っている前提で教科書は書かれています。 |
|||
2016年の現在では、普通科高校の情報科目には『社会と情報』『情報の科学』の2つの科目がある<ref>令和三年現在、『社会と情報』・『情報の科学』から『情報I』(必須)・『情報II』(選択)への移行途中で先行実施期間中です。[https://www.mext.go.jp/b_menu/shingi/chukyo/chukyo3/004/siryo/__icsFiles/afieldfile/2016/08/29/1376580_3.pdf 今後の学習指導要領改訂スケジュール]平成28年8月26日 中央教育審議会 教育課程部会 資料3</ref>。 |
|||
単なるマウスの使い方とか、キーボードの使い方とか、そういうのは中学校卒業までに習っているはずという前提で、教科書は書かれている。 |
|||
『情報の科学』のほうが技術的詳細について説明されています。 |
|||
; 高校生の読者へ |
|||
さて、2016年の現在では、普通科高校の情報科目には『社会と情報』『情報の科学』の2つの科目がある。 |
|||
: 『情報の科学』は細かいぶん、初心者には雑多な情報も多く、初心者はまず『社会と情報』から読むことを勧めます。 |
|||
: 教科書は、それぞれの科目とも2回か3回か読めば充分でしょう。 |
|||
『情報の科学』のほうが、技術的に、より細かい事が説明されている。 |
|||
; 大人の読者へ |
|||
: これら検定教科書に書かれている内容のうち技術的な部分は、おおむね[[情報処理技術者試験]]の区分の1つ「[[基本情報技術者試験]]」の内容の相当します。 |
|||
* 高校生の読者へ |
|||
: もし大人がこのページを読んでるなら、それら技術者試験の市販の解説書の内容がすでに分かっているならば、ITリテラシーの自学自習の目的としては検定教科書を買う必要はありません。 |
|||
しかし、『情報の科学』は細かいぶん、初心者には雑多な情報も多く、初心者はまず『社会と情報』から読んだほうがいいだろう。 |
|||
そして、教科書は、それぞれの科目とも2回か3回か読めば、充分であろう。 |
|||
* 備考: 大人の読者へ |
|||
なお、これら検定教科書に書かれている内容のうち技術的な部分は、おおむねIT系の検定試験の「[[基本情報技術者試験]]」などの内容の初歩に相当する。 |
|||
なので、もし大人がこのページを読んでるなら、それら検定試験の市販の解説書の内容がすでに分かっているならば、ITリテラシーの自学自習の目的としては、わざわざ検定教科書を買う必要はない。 |
|||
== 勉強法 == |
== 勉強法 == |
||
この教科にかぎらず、基礎的なコンピュータのリテラシーについて自習する場合は、しばらくは検定教科書を中心に読んで勉強せざるを得ない |
この教科にかぎらず、基礎的なコンピュータのリテラシーについて自習する場合は、しばらくは検定教科書を中心に読んで勉強せざるを得ないでしょう。 |
||
書店に行っても、手頃なコンピューターの入門書が置いてない場合が多いでしょう。教科書取り扱い店で、高校の情報科目の検定教科書を注文する必要があるかもしれない<ref>検定教科書の購入方法については、記事『[[小学校・中学校・高等学校の学習/検定教科書の購入方法]]』を参考のこと。</ref>。 |
|||
書店によっては、Windowsの使い方の書籍とか、そういう特定の商品の使い方の操作マニュアル的な入門書しか置いてない場合がある。 |
|||
しかし、単なる操作マニュアル本ではせっかく読んでもたいしてコンピュータのリテラシーが身につかない。 |
|||
あるいは、たとえ「C言語入門」のようなプログラミング入門書が書店に置いてあっても、それらは専門的であり高校レベルの初心者の勉強の役には立たない。 |
|||
「基本情報技術者試験」の試験対策本が書店に置いてあっても、中学を卒業したばかりの初心者には、その対策本はレベルが合っていない。 |
|||
書店に行っても、手頃なコンピューターの入門書が置いてない場合が多いだろう。なので、教科書取り扱い店で、高校の情報科目の検定教科書を注文する必要があるかもしれない。 |
|||
:※ 検定教科書の購入方法については、記事『[[小学校・中学校・高等学校の学習/検定教科書の購入方法]]』を参考のこと。 |
|||
書店によっては、Windowsの使い方の書籍とか、そういう特定の商品の使い方の操作マニュアル的な入門書しか、その書店に置いてない場合がある。 |
|||
しかし、単なる操作マニュアル本では、せっかく読んでも、たいしてコンピュータのリテラシーが身につかない。 |
|||
あるいは、たとえ「C言語入門」みたいにプログラミング入門書が書店に置いてあっても、それらは専門的であり高校レベルの初心者の勉強の役には立たない。 |
|||
「基本情報技術者試験」の試験対策本が書店に置いてあっても、中学を卒業したばかりの初心者には、その対策本はレベルを合わせていない。 |
|||
しかし検定教科書を除けば、「基本情報技術者試験」対策本以外に、他に高校生向けのコンピューターリテラシーの書籍が書店に売ってないのが現状なので、どうしても情報科の検定教科書が購入できない場合には、「基本情報技術者試験」の参考書を買って読むのが次善の策であろう。 |
|||
なお、ネットでなく書籍で勉強せよとアドバイスする理由は、 |
|||
:* 技術的な説明のために画像を使わないと説明しずらい事がかなり多く、そのような説明のための画像が、書籍なら充実してるから。 |
|||
たとえば、画像のデジタル化のしくみについての説明画像なんて、画像をつかわずに言葉だけで説明するのは難解である。 |
|||
なんらかのソフトウェアの操作方法の説明についても、そのソフトウェアの画面の画像無しでは、説明は困難である。 |
|||
じっさいに検定教科書を読むと、1つのページあたり、2つくらいの画像が載っていたりと、かなり画像が多い。 |
|||
ネットの無料の教材なんて、画像がほとんど無いのが通常であろう。画像をつくる作業には、けっこう手間が掛かるのである。 |
|||
しかし、検定教科書を除けば、「基本情報技術者試験」対策本以外に、他に高校生向けのコンピューター・リテラシーの書籍が書店に売ってないのが現状どうしても情報科の検定教科書が購入できない場合には、「基本情報技術者試験」の参考書を買って読むのが次善の策でしょう。 |
|||
== 検定教科書の内容 == |
== 検定教科書の内容 == |
||
=== 『社会と情報』の内容 === |
=== 『社会と情報』の内容 === |
||
『社会と情報』では、以下の話題を説明してい |
『社会と情報』では、以下の話題を説明しています。 |
||
* 文字の符号化のJISコードやASCIIコード、Unicodeなどの紹介 |
* 文字の符号化のJISコードやASCII<ref>ASCIIコードと表記されることがあるが、ASCIIはAmerican Standard Code for Information Interchangeのアクロニムのなので「ASCIIコード」では「情報交換用米国標準コードコード」となってしまう。</ref>、Unicodeなどの紹介 |
||
* 音のサンプリングを例に標本化定理を紹介 |
* 音のサンプリングを例に[[w:標本化定理|標本化定理]]を紹介 |
||
* 情報量のビットやバイトの概念 |
* 情報量のビットやバイトの概念 |
||
* 2進数や16進数 |
* 2進数や16進数 |
||
* 色のRGBとCMYKについて。 |
* 色のRGBとCMYKについて。 |
||
* 画像のベクター画像 |
* 画像のベクター画像ラスター画像のちがい |
||
* データの圧縮 |
* データの圧縮と解凍 |
||
* エラー訂正のしくみ。 |
* エラー訂正のしくみ。 |
||
* 暗号化の原理をシーザー暗号を例にして説明。鍵暗号についても紹介。 |
* 暗号化の原理を[[w:シーザー暗号|シーザー暗号]]を例にして説明。鍵暗号についても紹介。[[w:計算量的安全性を持つ暗号|計算量的安全性を持つ暗号]]などについては紹介せず。 |
||
* 電子署名やファイアウォール、SSLなど、セキュリティに関する技術や用語など。 |
* 電子署名やファイアウォール、SSLなど、セキュリティに関する技術や用語など。 |
||
* 著作権法など。 |
* 著作権法など。 |
||
66 行 | 43 行 | ||
=== 『情報の科学』の内容 === |
=== 『情報の科学』の内容 === |
||
『情報の科学』では、さらに以下の話題を説明してい |
『情報の科学』では、さらに以下の話題を説明しています。 |
||
:フローチャートの概念 |
: フローチャートの概念 |
||
:CPUのレジスタにおけるREADやWRITEやADDなどの処理 |
: CPUのレジスタにおけるREADやWRITEやADDなどの処理<ref>アセンブリ言語を扱っているが、しかし「アセンブリ」の用語は教科書にはみられない。</ref>。 |
||
:メールサーバ |
: POPやSMTPなどのメールサーバ概論 |
||
:IPアドレス |
: IPアドレス、グローバルIPアドレスやプライベートIPアドレスについて |
||
:公開鍵暗号や共通鍵暗号の初歩。さらに発展項目としてRSA暗号の原理が紹介されてい |
: 公開鍵暗号や共通鍵暗号の初歩(計算量的安全性を持つ暗号概論)。さらに発展項目としてRSA暗号の原理が紹介されています。 |
||
:検索 |
: 検索における「AND検索」や「OR検索」をベン図で説明しています<ref>「ベン図」という用語は、教科書にはみられない。</ref>) |
||
:リレーショナルデータベースを、「キー」や「レコード」や「ソート」などの用語 |
: リレーショナルデータベースを、「キー」や「レコード」や「ソート」などの用語 |
||
:さらにリレーショナルデータベースの「結合」「射影」などの処理の用語も紹介。 |
: さらにリレーショナルデータベースの「結合」「射影」などの処理の用語も紹介。 |
||
: 表計算ソフトの、加法、減法や総和など、の基本的な演算のしかた。 |
|||
:表計算ソフトの |
: 表計算ソフトのマクロ |
||
: 統計数学の「分散」「標準偏差」などを、表計算ソフトを活用して計算する方法。 |
|||
:表計算ソフトのマクロ。 |
|||
: 統計の結果を、円グラフや棒グラフなどで、表計算ソフトを活用して表示する方法。 |
|||
: JavaScriptなどスクリプト言語を例に、アルゴリズムやフローチャートなどの説明。 |
|||
:統計数学の「分散」「標準偏差」などを、表計算ソフトを活用して計算する方法。 |
|||
: プログラミングの、if文やwhile文やfor文などの制御構造を、JavaScriptやエクセルマクロなどのコードを通して実例を紹介。 |
|||
:統計の結果を、円グラフや棒グラフなどで、表計算ソフトを活用して表示する方法。 |
|||
: プログラミングの、「配列」機能。 |
|||
: HTMLについて。マークアップ言語。 |
|||
:JavaScriptなどスクリプト言語を例に、アルゴリズムやフローチャートなどの説明。 |
|||
: WIKI(ウィキ)システム。 |
|||
:プログラミングの、if文やwhile文やfor文などの制御構造を、javascriptやエクセルマクロなどのコードを通して実例を紹介。 |
|||
:プログラミングの、「配列」機能。 |
|||
:HTMLについて。マークアップ言語。 |
|||
:WIKI(ウィキ)システム。 |
|||
* 一部の教科書 |
* 一部の教科書 |
||
:一部の教科書では、XMLを紹介。 |
:一部の教科書<ref name="日本文教出版">日本文教出版</ref>では、XMLを紹介。 |
||
:一部の教科書では「Hello world」文を、C言語やPythonやVisualBasicやPHPやRubyの例文で、巻末にて紹介。 |
:一部の教科書<ref name="日本文教出版" />では「Hello world」文を、[[C言語]]や[[Python]]や[[w:VisualBasic|VisualBasic]]や[[PHP]]や[[Ruby]]の例文で、巻末にて紹介。 |
||
: |
|||
=== 雑記 === |
=== 雑記 === |
||
「PDCA法」とか、あまりコンピュータと関係のない話題も、これら情報科の科目の教科書では、扱われてい |
「PDCA法」とか、あまりコンピュータと関係のない話題も、これら情報科の科目の教科書では、扱われています。 |
||
技術者試験などに出てくる用語なので、そのような用語も覚えておきましょう。 |
|||
コンビニエンスストアの「POS」システムなどの社会科でも習う用語も情報科では習います。 |
|||
まあ、検定試験などに出てくる用語だったりするので、そういう用語もせっかくだから覚えておこう。 |
|||
コンビニの「POS」システムとか、社会科でも習う用語も、情報科では習います。 |
|||
== 習わないこと == |
== 習わないこと == |
||
C言語やBASICなど |
C言語やBASICなどプログラミングについては普通科の「情報」科では習っていないようです。ただ「C言語」という名称だけなら紹介している検定教科書がありますし組み込みソフトなどでC言語が使われる用途もある事も検定教科書で紹介されています。 |
||
また、BASICで書かれた簡単なプログラム文は中学校の技術科で紹介されています。 |
|||
また、BASICで書かれた簡単なプログラム文は、中学校の技術科で紹介されています。 |
|||
== どうしてもプログラミング言語を勉強したい場合 == |
== どうしてもプログラミング言語を勉強したい場合 == |
||
=== なにを学ぶ? === |
=== なにを学ぶ? === |
||
高校レベルの初心者は |
高校レベルの初心者は時間が足りないので、プログラミング言語の文法を学ぶことは積極的には勧めません。なぜなら、5教科と両立して勉強できるような簡単な言語が現代では少ないからです。 |
||
高校生は、まずはワープロソフトの使い方や表計算ソフトの使い方を、学校の「情報」教科の授業で練習するなど仕事などでパソコンを必要な時に使えるよいうになることがより重要です。 |
|||
=== 高校生は独学で JavaScript を学ぶことは適切か? === |
|||
高校生は、まずは、ワープロソフトの使い方や表計算ソフトの使い方を、学校の「情報」教科の授業で練習するなど、仕事などでパソコンを必要な時に使えるようにしたほうがいいだろう。 |
|||
どうしてもプログラミング言語を勉強したい場合は、BASIC(ベーシック)系統の言語のような、なるべく簡単なプログラミング言語から学ぶのが、初心者むけの解説が充実している場合が多くて良いのだが、しかし現代ではBASIC系の言語の書籍が少ない。 |
|||
なので、他の言語から勉強する事になるだろう。この場合は、「C言語」(シー げんご)というプログラミング言語が、書店で初心者向けの書籍が充実しているので、勉強しやすいだろう。 |
|||
=== 高校生は独学で、ジャバ スクリプトは、勉強しなくていい? === |
|||
初心者むけとして有名な言語に、「[[JavaScript]]」(ジャバ スクリプト)というプログラミング言語があります。 |
初心者むけとして有名な言語に、「[[JavaScript]]」(ジャバ スクリプト)というプログラミング言語があります。 |
||
JavaScriptは、[[w:ウェブブラウザ|ウェブブラウザ]]で動作するので、最も広く普及しているプログラミング言語の一つといえます。 |
JavaScriptは、[[w:ウェブブラウザ|ウェブブラウザ]]で動作するので、最も広く普及しているプログラミング言語の一つといえます。 |
||
誕生当初 Netscape Navigator に実装された JavaScript は、まさに初心者むけの言語でした。その後、JavaScriptの普及とともにブラウザベンダーは競うように新機能を追加し、機能が増えるのだけなら良いのですが、ブラウザによって機能があったりなかったり、微妙な差異があり、プログラマはその違いに苦慮する状況が生まれました。 |
誕生当初 Netscape Navigator に実装された JavaScript は、まさに初心者むけの言語でした。その後、JavaScriptの普及とともにブラウザベンダーは競うように新機能を追加し、機能が増えるのだけなら良いのですが、ブラウザによって機能があったりなかったり、微妙な差異があり、プログラマはその違いに苦慮する状況が生まれました。 |
||
1997年、仕様の乱立状況を打破するため、JavaScriptの言語コア(文法と標準組み込みオブジェクトなど、入出力は除く)は[[w:ECMAインターナショナル|ECMAインターナショナル]]によって[[w:ECMAScript|ECMAScript]](ECMA-262)として国際標準化されます。難航したECMAScript Edition 4がリリースされないなど紆余曲折がありましたが、JavaScriptの仕様は強化されていき、当初の玩具らしさは影を潜め、標準化により実装のばらつきも小さくなっているので、その意味でが学ぶべき価値があると言えます。 |
1997年、仕様の乱立状況を打破するため、JavaScriptの言語コア(文法と標準組み込みオブジェクトなど、入出力は除く)は[[w:ECMAインターナショナル|ECMAインターナショナル]]によって[[w:ECMAScript|ECMAScript]](ECMA-262)として国際標準化されます。難航したECMAScript Edition 4がリリースされないなど紆余曲折がありましたが、JavaScriptの仕様は強化されていき、当初の玩具らしさは影を潜め、標準化により実装のばらつきも小さくなっているので、その意味でが学ぶべき価値があると言えます。 |
||
また、ウェブブラウザ上のJavaScriptを学ぶには、[[HTML]](と[[CSS]])をある程度は習得しておく必要があります。多くの高校生にとって、HTMLは身近な学習対象ではないので、ここにも一つJavaScriptを学ぶハードルがあります。他方、JavaScriptをウェブコンテンツに組み込んでダイナミックなウェブサイトを作ることは、大きのモチベーションの1つになりえます。 |
また、ウェブブラウザ上のJavaScriptを学ぶには、[[HTML]](と[[CSS]])をある程度は習得しておく必要があります。多くの高校生にとって、HTMLは身近な学習対象ではないので、ここにも一つJavaScriptを学ぶにあたってのハードルがあります。他方、JavaScriptをウェブコンテンツに組み込んでダイナミックなウェブサイトを作ることは、大きのモチベーションの1つになりえます。 |
||
高校生が、もし学校でJavaScriptを習えるのなら、その機会を利用したほうが良いでしょう(多くの検定教科書は、PythonやVBAとともにJavaScriptを紹介しています)。 |
高校生が、もし学校でJavaScriptを習えるのなら、その機会を利用したほうが良いでしょう(多くの検定教科書は、PythonやVBAとともにJavaScriptを紹介しています)。 |
||
'''尚、JavaScript と [[Java]](ジャバ) とは、異なるプログラミング言語です。''' 混同しないように注意ましょう。「Java」の複雑な文法と膨大なライブラリクラスは |
'''尚、JavaScript と [[Java]](ジャバ) とは、異なるプログラミング言語です。''' |
||
JavaScriptとJavaを混同しないように注意しましょう。「Java」の複雑な文法と膨大なライブラリクラスは初心者むきではありません。 |
|||
=== 入門する言語の決め方 === |
=== 入門する言語の決め方 === |
||
「C言語」と混同して、いきなり「[[C++]]」(シー プラス プラス)という言語からは勉強しないように気をつけよう。C++言語の入門書では、C言語の知識を前提としている場合が多いので、まだC言語を知らない人が(C言語の知識を前提とした)C++の入門書を使って学習すると理解が進みません。 |
|||
他の言語では、いきなり「PHP」(ピー エイチ ピー)などのサーバー用プログラミング言語の入門書を読んでもサーバーの知識がないと理解には至らない。 |
|||
このように他の技術の予備知識を必要とする言語もあります。 |
|||
他の言語では、いきなり「PHP」(ピー エイチ ピー)とかのサーバー用プログラミング言語の入門書を読んでも、そもそもサーバーの知識がないと、何もわからない。また、そもそもPHPの文法が、C言語やC++をまねているという事情もあり、初心者がPHPを読んでも無駄である。 |
|||
このように、ある程度、他の技術の予備知識を必要とする言語もある。 |
|||
;出版数のとぼしい言語は避けるべき |
|||
「そもそも論」として、一般の書店の本棚に書籍のないプログラム言語や、やや詳し目の書籍も置いてある大型書店にすら入門書のないプログラム言語、もしくは、本棚にあっても他言語と比べて出版数の少ないマイナーな言語は(たとえば、ある本屋にはC言語の本は8種類くらい書籍が置いてある一方で、別のマイナー言語は1〜2種類しか置いてないような場合)、そのマイナー言語は初心者にとっては学習の必要が無い言語です。 |
|||
そのような書店では見かけないマイナーなプログラム言語は、そもそも、そのプログラム言語の作成者が、まったくプログラム初心者に普及させる気がなかったりする言語なので(かなり特殊な用途で用いられたり、単に古すぎて時代遅れの言語だったり、あるいは作成者の好奇心や実験目的で作成されただけの汎用性(はんようせい)の劣る(おとる)言語だったりします)、初心者は無視すべきマイナー言語です。 |
|||
せっかく、そういうマイナー言語の書籍を買っても、初心者むけの説明がされてなかったり、あるいは、出版サイドにまともな競争もなく、わかりづらい説明の書籍ばかりなのが現状です。 |
|||
;商売人の情報商材に注意 |
|||
ネットでは、商売人たちが、自分たちの販売する情報商材を売りつけたくて「これからは○○のプログラム言語を勉強して当然!」みたいに吹聴(ふいちょう)していたりしますが、しかし、大型書店にすらロクに並んでないような言語は、学習のメリットが乏しいので、避けましょう。 |
|||
;ダメな日本語コミュニティもある |
|||
もし実際にあるマイナー言語が大企業などで使われている言語であったとしても、大型書店にすら本棚にほとんど書籍が並んでない言語であることは、つまり、その言語のコミュニティの日本人がマトモにその分野の解説書を書くなどの教育活動をせずにサボっていて、他の言語コミュニティの教育にタダ乗りしている可能性の高いダメなコミュニティという可能性もある状況証拠ですので、そういうコミュニティは避けたほうが無難です。 |
|||
言語でなく、組み込みOSなど特定のOSの技術書なら、出版数が少ないのも仕方無いですが、しかしプログラム言語の書籍なら、一般的にどのOSでも動くハズなので(ただしマック関連やスマホ関連を除く)、なのにプログラム言語で出版数が少ない↑に解説サイトなどすらも乏しい言語は、だいぶ、教育活動のサボられている状況なワケです。 |
|||
プログラマーたちの中には、日本社会では甘やかされている人も多く、マトモに解説書の書かれてない言語なのに「これからは○○のプログラム言語を勉強して当然! プログラマーのくせにコレすら勉強できない奴は時代おくれのナマケモノ!! (彼らは「その言語に詳しい自分は優秀だ」と思っている)」みたいな主張をしている、信じがたい厚顔無恥(こうがんむち)なプログラマーたちの集まっていて自己正当化しているダメなプログラム言語の日本コミュニティすらあります。 |
|||
たとえそのプログラム言語の英語コミュニティの人がマトモでも、残念ながら、そういう言語の日本語コミュニティは人材の質が低く腐敗していますので、絶対に初心者は日本ではそのプログラム言語を避けましょう。 |
|||
まして、匿名の電子掲示板がその言語の日本語コミュニティの溜まり場になっているような言語は、論外です。 |
|||
=== 入門書の探し方 === |
=== 入門書の探し方 === |
||
書店では、プログラミング言語の初心者向けの書籍と専門家向けの書籍が同じ棚にあることが珍しくなくいので気をつけましょう。 |
|||
5教科の書籍が高校レベルと大学レベルの書籍をちがう棚に分けてもらえる状況とは、プログラミング言語の書店での状況は違っています。いちいちプログラミング入門書の書籍と専門家向けのの書籍とを書店は別々の棚に分けられていることはまれです。残念ながらこれは図書館にも言えます。 |
|||
それ以外の本は、すでに初心者向けの入門書を買った人が、さらに知識を深めるための専門書であり、けっして初心者向けではない。 |
|||
いくつかのプログラミング言語で「入門」と名乗る本を読んでみると書籍の冒頭から、入門者には分からない内容の記述の大量な自称「入門書」もあります。 |
|||
「比喩が分かりやすい本」ではなく、「一通り文法事項が順序だてされて説明してある本」と評されている書籍の購入を勧めます。「具体例な開発例が分かりやすい本」ではなく「一通り文法事項が順序だてされて説明してある本」を買いましょう。 |
|||
たとえば、「C言語完全マニュアル」みたいなタイトルの本は、すでに「C言語入門」とかを読んだ人で、さらに仕事でC言語を使う人が、細かい知識を確認するための書籍なので、その書籍の記述が羅列的であり、まったく初心者向けには噛み砕いてくれないので、なので初心者が読んでも理解できない。 |
|||
:'''書店では、プログラミング言語の初心者向けの書籍と、専門家向けの書籍が、同じ棚(たな)にあったりして、すぐ隣りに置いてあったりするので、気をつけよう'''。 |
|||
5教科の書籍が高校レベルと大学レベルの書籍をちがう棚に分けてもらえる状況とは、プログラミング言語の書店での状況は違っている。いちいちプログラミング入門書の書籍と、専門家向けのの書籍とを、書店は別々の棚に分けてくれない。 |
|||
なお、 |
|||
いくつかのプログラミング言語で、「入門」と名乗る本を読んでみると、書籍の冒頭から、入門者には分からない内容の記述の大量な、自称「入門書」もある。 |
|||
逆にいうと、1冊の本で、「すべてが わかる!」とか「高度なことまで分かる」とか入門書のくせに主張してる本は、入門レベルを越えた難解な記述ばかりのダメな書籍なので、高校生は読まないほうが良い。 |
|||
こまったことに、書店のプログラミング言語コーナーにある、プログラム言語の解説書には、プログラム経験ありの大人が読んでさえ、なかなか分からない記述なのに、タイトルに「わかる」とか「やさしい」とか名付けている、自称「入門」書も、プログラム言語の解説書には多い。 |
|||
また、こまったことに、タイトルと内容の一致しない本もある。 |
|||
なお、Amazonなどでのプログラム言語の入門書の読者レビュー欄を見ると、どう見ても「本当に読んだのか?」と疑わざるをえない本も多い。どうやら、出版社からの宣伝依頼をうけた業者が、宣伝のために一般読者をよそおって、Amazonなどに投稿しているようである。 |
|||
なので、Amazonのレビュー欄でもし「○○(比喩など)が分かりやすかった」とか書かれていたら、(比喩以外の)他の部分(文法など)がその書籍では分かりづらかった、というのが実態であるという事を読者は学ぼう。 |
|||
なので、買うべきは、けっして「比喩が分かりやすい本」ではなく、「一通り文法事項が順序だてされて説明してある本」と評されている本を買おう。「具体例な開発例が分かりやすい本」ではなく、「一通り文法事項が順序だてされて説明してある本」を買おう。 |
|||
=== 入門書の読み方 === |
=== 入門書の読み方 === |
||
あるプログラミング言語の入門書一冊で、そのプログラミング言語のすべてを理解しきることは望むべきでありません。 |
|||
プログラムの勉強ではPCを用意しプログラム開発環境を用意しプログラムを入力し動作させるのがよいでしょう。 |
|||
paiza.IOやWandboxのようなオンライン開発実行環境も年々機能向上しており。オンライン開発実行環境とタブレット・スマートホンの組み合わせでプログラミング環境を作ることは可能です。 |
|||
さてさて、プログラムの勉強では、パソコンを用意して、そのプログラム言語のプログラム実行環境を用意して、じっさいにプログラム文を入力して動作させてみるのがいいだろう。 |
|||
'''パソコンを所有してない人は、実行環境を用意できないので、現時点ではプログラミングの勉強は、あきらめたほうが良い'''。 |
|||
なお、プログラミングの各コマンド(例えばある言語では「print」で出力表示とか)は暗記する必要は無い。コマンド名は、必要な時に書籍などで調べればいい。 |
|||
どっちみち、細かい文法やコマンド名をせっかく丸暗記しても、年月が過ぎると、規格変更などによって文法の細部が変わっていくので、丸暗記は無駄になる。 |
|||
== ※ 範囲外: 初心者のためのプログラミングの練習方法 == |
== ※ 範囲外: 初心者のためのプログラミングの練習方法 == |
||
※ 本節の内容は高校の範囲を越えてるので練習しなくて良いです。高校卒業後の進学後などに参考になればさいわいです。 |
|||
まず、上述したようにパソコンが必要です。 |
|||
では、どうやって実際にプログラミング言語を勉強するかというと、まず、(プログラミング言語の)入門書に書いてあるコードを、最初のコードが出て来るまで読み進めて、実際にパソコンに入力してみて、プログラムを実行するという手順になります。 |
|||
この最初のコードを入力するときは、とりあえず、何も考えずに、入力してみてください。そして、書籍の指示にしたがった方法で、プログラムの書かれたファイルを実行してみてください。 |
|||
まず、上述したように学習環境が必要です。 |
|||
たとえば、ある入門書のさいしょのコードで(※ 下記のコードの例は「C++」言語の場合)、 |
|||
どうやって実際にプログラミング言語を勉強するかというと、プログラミング言語の入門書を最初のコードが出て来るまで読み進めて実際に入力しプログラムを実行するという流れになります。 |
|||
この最初のコードを入力するときは、とりあえず何も考えずに入力してみてください。そして書籍の指示にしたがった方法でプログラムの書かれたファイルを実行してみてください。 |
|||
たとえば、ある入門書の最初のコードで(※ 下記のコードの例は「C++」言語の場合)、 |
|||
<syntaxhighlight lang="cpp"> |
<syntaxhighlight lang="cpp"> |
||
227 行 | 134 行 | ||
} |
} |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
と |
とあれば、それをそのまま入力して、コンパイル、リンクし、実行形式を得て、実行形式を実行してみます。 |
||
まず、エラーがなく正常にリンクされるまで |
まず、エラーがなく正常にリンクされるまでコードを修正します。 |
||
これを実行すると、 |
|||
<pre> |
<pre> |
||
ようこそ! |
ようこそ! |
||
プログラミングの世界へ! |
プログラミングの世界へ! |
||
</pre> |
</pre> |
||
と |
と2行で表示されます。 |
||
しかし、ほとんどの初心者は何んらかの入力ミスをしている事が多く、ファイルをコンパイルしてもエラーが起きてしまい実行形式を得ることができないか実行できても期待どおりに動かす事ができません。 |
|||
エラーがあれば、書籍に書かれたコードをよく見ながらコードを修正します。 |
|||
しかし、ほとんどの初心者は、たいてい、なんらかの入力ミスをしている事が多く、そのため、ファイルをコンパイルしてもエラーが起きてしまうので、実行形式を得ることができないか、実行できても期待どおりに動かす事ができません。 |
|||
エラーがあれば、書籍に書かれたコードをよく見ながら、コードを修正します。 |
|||
もし、エラーせずにプログラムをコンパイル、リンク、実行できたのなら、すでにアナタは、入力したそのコードの仕組みを、だいたい分かっていますので、本wikibooksで説明するような、次の作業に移ります。 |
もし、エラーせずにプログラムをコンパイル、リンク、実行できたのなら、すでにアナタは、入力したそのコードの仕組みを、だいたい分かっていますので、本wikibooksで説明するような、次の作業に移ります。 |
||
「次の作業」とは、もし入力したコードが、エラーもなくプログラムが正常に実行されれば、 |
「次の作業」とは、もし入力したコードが、エラーもなくプログラムが正常に実行されれば、 |
||
今度は、さきひど入力したコードをコピーして別のファイルをつくり、数分ほど、さきほど入力したコード中にある「ようこそ!」などの文章などを、自分で思うままに'''書き換えてみてください'''。 |
|||
今度は、さきひど入力したコードをコピーして別のファイルをつくり、数分ほど、さきほど入力したコード中にある「ようこそ!」などの文章などを、自分で思うままに'''書き換えてみてください'''。(←これが重要です!!) |
|||
(書き換え前の書籍どおりのコードと、書き換え後の自分流のコードの2種類を、パソコンに保管しておく。) |
(書き換え前の書籍どおりのコードと、書き換え後の自分流のコードの2種類を、パソコンに保管しておく。) |
||
上記のコードの場合なら、たとえば「<< endl」を省略してみたら、どうなるかとかを、自分流コードで試してみるのです。なお「<< endl」とは「改行する」という意味です。 |
上記のコードの場合なら、たとえば「<< endl」を省略してみたら、どうなるかとかを、自分流コードで試してみるのです。なお「<< endl」とは「改行する」という意味です。 |
||
じっさい、たとえばあるプログラミング言語で、さきほどのコードから「<< endl」を除いてみたコード |
じっさい、たとえばあるプログラミング言語で、さきほどのコードから「<< endl」を除いてみたコード |
||
275 行 | 175 行 | ||
</pre> |
</pre> |
||
というふうに、改行されずに、1行でつづけて表示されるはずです。 |
というふうに、改行されずに、1行でつづけて表示されるはずです。 |
||
あるいは、「ようこそ」を「おはよう」に書き換えてみて、 |
あるいは、「ようこそ」を「おはよう」に書き換えてみて、 |
||
(コード) |
|||
<syntaxhighlight lang="cpp"> |
<syntaxhighlight lang="cpp"> |
||
#include <iostream> |
#include <iostream> |
||
291 行 | 189 行 | ||
} |
} |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
を実行すると |
を実行すると |
||
311 行 | 207 行 | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
が何なのかを理解できないだろうし、ここは、まだ書き換えなくても良いのです。 |
が何なのかを理解できないだろうし、ここは、まだ書き換えなくても良いのです。 |
||
このように、 |
このように、 |
||
318 行 | 213 行 | ||
なぜ、わざわざ自分なりに書き換えてみてまで、自分の理解を確かめる必要があるのかというと、その理由は、将来、プログラミングの入力エラーを自分が起こしたときに原因を特定できるようにするために、今のうちに、いろいろと試してみてどこを書き換えると、どう結果が変わるかを確認しておく必要があるのです。 |
なぜ、わざわざ自分なりに書き換えてみてまで、自分の理解を確かめる必要があるのかというと、その理由は、将来、プログラミングの入力エラーを自分が起こしたときに原因を特定できるようにするために、今のうちに、いろいろと試してみてどこを書き換えると、どう結果が変わるかを確認しておく必要があるのです。 |
||
また、大学などに進学してプログラミング科目を習う場合の定期テストでも、定期テストでは授業であつかったコードがそのまま出題される事はないので、自分でコードを書き換えてみて確かめるようにしないと、そのプログラミング科目の定期テストの問題が解けずに不合格になってしまう可能性もあります。 |
また、大学などに進学してプログラミング科目を習う場合の定期テストでも、定期テストでは授業であつかったコードがそのまま出題される事はないので、自分でコードを書き換えてみて確かめるようにしないと、そのプログラミング科目の定期テストの問題が解けずに不合格になってしまう可能性もあります。 |
||
なお、大学の場合、その授業の毎時間のさいごに、その授業のコードを提出する場合があるので、授業用のコードは書き換えずに、授業用コードを自分流コードにコピーペーストして、その自分流コードを書き換えてみて試行錯誤しましょう。 |
なお、大学の場合、その授業の毎時間のさいごに、その授業のコードを提出する場合があるので、授業用のコードは書き換えずに、授業用コードを自分流コードにコピーペーストして、その自分流コードを書き換えてみて試行錯誤しましょう。 |
||
プログラミングの学習では、正解のコードを、覚えることは、けっして、学習の目的ではありません。そもそもコードは、無限のパターンがあるので、覚えようと思っても不可能です。 |
プログラミングの学習では、正解のコードを、覚えることは、けっして、学習の目的ではありません。そもそもコードは、無限のパターンがあるので、覚えようと思っても不可能です。 |
||
プログラミングの学習は、もしもミスのあるコードを書いてしまった場合に、そのミスを探し当てられるようになるために試行錯誤することが、学習の目的なのです。 |
プログラミングの学習は、もしもミスのあるコードを書いてしまった場合に、そのミスを探し当てられるようになるために試行錯誤することが、学習の目的なのです。 |
||
さて、書籍での学習で、数分ほどの書き換えによるコードの試行錯誤が終わったら、書籍をそのまま次のページへと読み進んでください。 |
さて、書籍での学習で、数分ほどの書き換えによるコードの試行錯誤が終わったら、書籍をそのまま次のページへと読み進んでください。 |
||
そして、また新しいコードが出てきたら、同様に入力してプログラムを実行してみます。なお、新しいコードの入力の際、たいていは、前のページで入力した前回のコードに近いコード前回のコードをコピーペーストして、それをもとに、いまのページの新コードへと書き換えても、かまいません。 |
|||
そして、また新しいコードが出てきたら、同様に入力してプログラムを実行してみます。なお、新しいコードの入力の際、たいていは、前のページで入力した前回のコードに近いコードなので、前回のコードをコピーペーストして、それをもとに、いまのページの新コードへと書き換えても、かまいません。 |
|||
いちいち、まったくゼロから新コードを書き始める必要は、ありません。 |
いちいち、まったくゼロから新コードを書き始める必要は、ありません。 |
||
けっして「コピーペーストをして入力作業を減らしても、技術が身に付くのだろうか?」と心配する必要はありません。なぜなら、たいていの初心者は、たとえコピーペーストをして作業を減らした場合ですら、入力ミスをしてしまうことが多く、なにがしかのエラーを起こしてしまうからです。 |
けっして「コピーペーストをして入力作業を減らしても、技術が身に付くのだろうか?」と心配する必要はありません。なぜなら、たいていの初心者は、たとえコピーペーストをして作業を減らした場合ですら、入力ミスをしてしまうことが多く、なにがしかのエラーを起こしてしまうからです。 |
||
裏をかえせば、コピーペーストをして入力作業を減らしてもエラーを起こさずに正常にプログラムを実行できるようなコードをすぐに書けるなら、すでにアナタは、そのページの新コードが、だいたい分かっているのです。 |
裏をかえせば、コピーペーストをして入力作業を減らしてもエラーを起こさずに正常にプログラムを実行できるようなコードをすぐに書けるなら、すでにアナタは、そのページの新コードが、だいたい分かっているのです。 |
||
ともかく、コードを実行してみてエラーが出ても、エラーがなくなるまで直しましょう。もし、エラーがなく正常にプログラムが実行されたら、また自分流に書き換えを数分ほどしてみて、試行錯誤します。 |
ともかく、コードを実行してみてエラーが出ても、エラーがなくなるまで直しましょう。もし、エラーがなく正常にプログラムが実行されたら、また自分流に書き換えを数分ほどしてみて、試行錯誤します。 |
||
それが終わったら、次のページへと読み進めます。 |
それが終わったら、次のページへと読み進めます。 |
||
高校生の範囲なら、このような練習方法でも、充分です。 |
高校生の範囲なら、このような練習方法でも、充分です。 |
||
もし高校で[[JavaScript]]や(プログラミング言語ではないが)[[HTML]]などを習う場合の練習方法も、だいたい、このような感じで練習すれば、高校生なら充分でしょう。 |
もし高校で[[JavaScript]]や(プログラミング言語ではないが)[[HTML]]などを習う場合の練習方法も、だいたい、このような感じで練習すれば、高校生なら充分でしょう。 |
||
2021年7月7日 (水) 23:20時点における版
この教科について
高校の「情報」教科では、データの圧縮のしくみや、エラー訂正のしくみなどより高度な内容を学びます。 単なるマウスの使い方、キーボードの使い方などは中学校卒業までに習っている前提で教科書は書かれています。
2016年の現在では、普通科高校の情報科目には『社会と情報』『情報の科学』の2つの科目がある[1]。 『情報の科学』のほうが技術的詳細について説明されています。
- 高校生の読者へ
- 『情報の科学』は細かいぶん、初心者には雑多な情報も多く、初心者はまず『社会と情報』から読むことを勧めます。
- 教科書は、それぞれの科目とも2回か3回か読めば充分でしょう。
- 大人の読者へ
- これら検定教科書に書かれている内容のうち技術的な部分は、おおむね情報処理技術者試験の区分の1つ「基本情報技術者試験」の内容の相当します。
- もし大人がこのページを読んでるなら、それら技術者試験の市販の解説書の内容がすでに分かっているならば、ITリテラシーの自学自習の目的としては検定教科書を買う必要はありません。
勉強法
この教科にかぎらず、基礎的なコンピュータのリテラシーについて自習する場合は、しばらくは検定教科書を中心に読んで勉強せざるを得ないでしょう。 書店に行っても、手頃なコンピューターの入門書が置いてない場合が多いでしょう。教科書取り扱い店で、高校の情報科目の検定教科書を注文する必要があるかもしれない[2]。 書店によっては、Windowsの使い方の書籍とか、そういう特定の商品の使い方の操作マニュアル的な入門書しか置いてない場合がある。 しかし、単なる操作マニュアル本ではせっかく読んでもたいしてコンピュータのリテラシーが身につかない。 あるいは、たとえ「C言語入門」のようなプログラミング入門書が書店に置いてあっても、それらは専門的であり高校レベルの初心者の勉強の役には立たない。
「基本情報技術者試験」の試験対策本が書店に置いてあっても、中学を卒業したばかりの初心者には、その対策本はレベルが合っていない。
しかし、検定教科書を除けば、「基本情報技術者試験」対策本以外に、他に高校生向けのコンピューター・リテラシーの書籍が書店に売ってないのが現状どうしても情報科の検定教科書が購入できない場合には、「基本情報技術者試験」の参考書を買って読むのが次善の策でしょう。
検定教科書の内容
『社会と情報』の内容
『社会と情報』では、以下の話題を説明しています。
- 文字の符号化のJISコードやASCII[3]、Unicodeなどの紹介
- 音のサンプリングを例に標本化定理を紹介
- 情報量のビットやバイトの概念
- 2進数や16進数
- 色のRGBとCMYKについて。
- 画像のベクター画像ラスター画像のちがい
- データの圧縮と解凍
- エラー訂正のしくみ。
- 暗号化の原理をシーザー暗号を例にして説明。鍵暗号についても紹介。計算量的安全性を持つ暗号などについては紹介せず。
- 電子署名やファイアウォール、SSLなど、セキュリティに関する技術や用語など。
- 著作権法など。
- フィッシング詐欺などサイバー犯罪の手口。
- 表計算ソフトの使用法について、巻末などで紹介。
『情報の科学』の内容
『情報の科学』では、さらに以下の話題を説明しています。
- フローチャートの概念
- CPUのレジスタにおけるREADやWRITEやADDなどの処理[4]。
- POPやSMTPなどのメールサーバ概論
- IPアドレス、グローバルIPアドレスやプライベートIPアドレスについて
- 公開鍵暗号や共通鍵暗号の初歩(計算量的安全性を持つ暗号概論)。さらに発展項目としてRSA暗号の原理が紹介されています。
- 検索における「AND検索」や「OR検索」をベン図で説明しています[5])
- リレーショナルデータベースを、「キー」や「レコード」や「ソート」などの用語
- さらにリレーショナルデータベースの「結合」「射影」などの処理の用語も紹介。
- 表計算ソフトの、加法、減法や総和など、の基本的な演算のしかた。
- 表計算ソフトのマクロ
- 統計数学の「分散」「標準偏差」などを、表計算ソフトを活用して計算する方法。
- 統計の結果を、円グラフや棒グラフなどで、表計算ソフトを活用して表示する方法。
- JavaScriptなどスクリプト言語を例に、アルゴリズムやフローチャートなどの説明。
- プログラミングの、if文やwhile文やfor文などの制御構造を、JavaScriptやエクセルマクロなどのコードを通して実例を紹介。
- プログラミングの、「配列」機能。
- HTMLについて。マークアップ言語。
- WIKI(ウィキ)システム。
- 一部の教科書
雑記
「PDCA法」とか、あまりコンピュータと関係のない話題も、これら情報科の科目の教科書では、扱われています。 技術者試験などに出てくる用語なので、そのような用語も覚えておきましょう。 コンビニエンスストアの「POS」システムなどの社会科でも習う用語も情報科では習います。
習わないこと
C言語やBASICなどプログラミングについては普通科の「情報」科では習っていないようです。ただ「C言語」という名称だけなら紹介している検定教科書がありますし組み込みソフトなどでC言語が使われる用途もある事も検定教科書で紹介されています。 また、BASICで書かれた簡単なプログラム文は中学校の技術科で紹介されています。
どうしてもプログラミング言語を勉強したい場合
なにを学ぶ?
高校レベルの初心者は時間が足りないので、プログラミング言語の文法を学ぶことは積極的には勧めません。なぜなら、5教科と両立して勉強できるような簡単な言語が現代では少ないからです。 高校生は、まずはワープロソフトの使い方や表計算ソフトの使い方を、学校の「情報」教科の授業で練習するなど仕事などでパソコンを必要な時に使えるよいうになることがより重要です。
高校生は独学で JavaScript を学ぶことは適切か?
初心者むけとして有名な言語に、「JavaScript」(ジャバ スクリプト)というプログラミング言語があります。 JavaScriptは、ウェブブラウザで動作するので、最も広く普及しているプログラミング言語の一つといえます。 誕生当初 Netscape Navigator に実装された JavaScript は、まさに初心者むけの言語でした。その後、JavaScriptの普及とともにブラウザベンダーは競うように新機能を追加し、機能が増えるのだけなら良いのですが、ブラウザによって機能があったりなかったり、微妙な差異があり、プログラマはその違いに苦慮する状況が生まれました。
1997年、仕様の乱立状況を打破するため、JavaScriptの言語コア(文法と標準組み込みオブジェクトなど、入出力は除く)はECMAインターナショナルによってECMAScript(ECMA-262)として国際標準化されます。難航したECMAScript Edition 4がリリースされないなど紆余曲折がありましたが、JavaScriptの仕様は強化されていき、当初の玩具らしさは影を潜め、標準化により実装のばらつきも小さくなっているので、その意味でが学ぶべき価値があると言えます。
また、ウェブブラウザ上のJavaScriptを学ぶには、HTML(とCSS)をある程度は習得しておく必要があります。多くの高校生にとって、HTMLは身近な学習対象ではないので、ここにも一つJavaScriptを学ぶにあたってのハードルがあります。他方、JavaScriptをウェブコンテンツに組み込んでダイナミックなウェブサイトを作ることは、大きのモチベーションの1つになりえます。
高校生が、もし学校でJavaScriptを習えるのなら、その機会を利用したほうが良いでしょう(多くの検定教科書は、PythonやVBAとともにJavaScriptを紹介しています)。
尚、JavaScript と Java(ジャバ) とは、異なるプログラミング言語です。
JavaScriptとJavaを混同しないように注意しましょう。「Java」の複雑な文法と膨大なライブラリクラスは初心者むきではありません。
入門する言語の決め方
「C言語」と混同して、いきなり「C++」(シー プラス プラス)という言語からは勉強しないように気をつけよう。C++言語の入門書では、C言語の知識を前提としている場合が多いので、まだC言語を知らない人が(C言語の知識を前提とした)C++の入門書を使って学習すると理解が進みません。 他の言語では、いきなり「PHP」(ピー エイチ ピー)などのサーバー用プログラミング言語の入門書を読んでもサーバーの知識がないと理解には至らない。
このように他の技術の予備知識を必要とする言語もあります。
入門書の探し方
書店では、プログラミング言語の初心者向けの書籍と専門家向けの書籍が同じ棚にあることが珍しくなくいので気をつけましょう。
5教科の書籍が高校レベルと大学レベルの書籍をちがう棚に分けてもらえる状況とは、プログラミング言語の書店での状況は違っています。いちいちプログラミング入門書の書籍と専門家向けのの書籍とを書店は別々の棚に分けられていることはまれです。残念ながらこれは図書館にも言えます。 いくつかのプログラミング言語で「入門」と名乗る本を読んでみると書籍の冒頭から、入門者には分からない内容の記述の大量な自称「入門書」もあります。
「比喩が分かりやすい本」ではなく、「一通り文法事項が順序だてされて説明してある本」と評されている書籍の購入を勧めます。「具体例な開発例が分かりやすい本」ではなく「一通り文法事項が順序だてされて説明してある本」を買いましょう。
入門書の読み方
あるプログラミング言語の入門書一冊で、そのプログラミング言語のすべてを理解しきることは望むべきでありません。 プログラムの勉強ではPCを用意しプログラム開発環境を用意しプログラムを入力し動作させるのがよいでしょう。
paiza.IOやWandboxのようなオンライン開発実行環境も年々機能向上しており。オンライン開発実行環境とタブレット・スマートホンの組み合わせでプログラミング環境を作ることは可能です。
※ 範囲外: 初心者のためのプログラミングの練習方法
※ 本節の内容は高校の範囲を越えてるので練習しなくて良いです。高校卒業後の進学後などに参考になればさいわいです。
まず、上述したように学習環境が必要です。 どうやって実際にプログラミング言語を勉強するかというと、プログラミング言語の入門書を最初のコードが出て来るまで読み進めて実際に入力しプログラムを実行するという流れになります。 この最初のコードを入力するときは、とりあえず何も考えずに入力してみてください。そして書籍の指示にしたがった方法でプログラムの書かれたファイルを実行してみてください。 たとえば、ある入門書の最初のコードで(※ 下記のコードの例は「C++」言語の場合)、
#include <iostream>
using namespace std;
int main()
{
cout << "ようこそ!" << endl;
cout << "プログラミングの世界へ!" << endl;
return 0;
}
とあれば、それをそのまま入力して、コンパイル、リンクし、実行形式を得て、実行形式を実行してみます。
まず、エラーがなく正常にリンクされるまでコードを修正します。
これを実行すると、
ようこそ! プログラミングの世界へ!
と2行で表示されます。
しかし、ほとんどの初心者は何んらかの入力ミスをしている事が多く、ファイルをコンパイルしてもエラーが起きてしまい実行形式を得ることができないか実行できても期待どおりに動かす事ができません。
エラーがあれば、書籍に書かれたコードをよく見ながらコードを修正します。 もし、エラーせずにプログラムをコンパイル、リンク、実行できたのなら、すでにアナタは、入力したそのコードの仕組みを、だいたい分かっていますので、本wikibooksで説明するような、次の作業に移ります。 「次の作業」とは、もし入力したコードが、エラーもなくプログラムが正常に実行されれば、 今度は、さきひど入力したコードをコピーして別のファイルをつくり、数分ほど、さきほど入力したコード中にある「ようこそ!」などの文章などを、自分で思うままに書き換えてみてください。 (書き換え前の書籍どおりのコードと、書き換え後の自分流のコードの2種類を、パソコンに保管しておく。) 上記のコードの場合なら、たとえば「<< endl」を省略してみたら、どうなるかとかを、自分流コードで試してみるのです。なお「<< endl」とは「改行する」という意味です。 じっさい、たとえばあるプログラミング言語で、さきほどのコードから「<< endl」を除いてみたコード
(コード)
#include <iostream>
using namespace std;
int main()
{
cout << "ようこそ!";
cout << "プログラミングの世界へ!";
return 0;
}
を実行すると
(実行結果)
ようこそ!プログラミングの世界へ!
というふうに、改行されずに、1行でつづけて表示されるはずです。
あるいは、「ようこそ」を「おはよう」に書き換えてみて、
#include <iostream>
using namespace std;
int main()
{
cout << "おはよう!";
cout << "プログラミングの世界へ!";
return 0;
}
を実行すると
(実行結果)
おはよう!プログラミングの世界へ!
というふうに、表示が確認することを、たしかめると、良いでしょう。
いっぽう、コードの理解できない部分は、書き換える必要がありません。
たとえば
#include <iostream>
using namespace std;
int main()
が何なのかを理解できないだろうし、ここは、まだ書き換えなくても良いのです。
このように、
- まずは書籍のコードを書き写して実行してみたあとに、正常に実行できるようになったら、
- 今度は、自分のコードを理解できる範囲で書き換えてみて、自分の理解を確かめてみてください。
なぜ、わざわざ自分なりに書き換えてみてまで、自分の理解を確かめる必要があるのかというと、その理由は、将来、プログラミングの入力エラーを自分が起こしたときに原因を特定できるようにするために、今のうちに、いろいろと試してみてどこを書き換えると、どう結果が変わるかを確認しておく必要があるのです。 また、大学などに進学してプログラミング科目を習う場合の定期テストでも、定期テストでは授業であつかったコードがそのまま出題される事はないので、自分でコードを書き換えてみて確かめるようにしないと、そのプログラミング科目の定期テストの問題が解けずに不合格になってしまう可能性もあります。 なお、大学の場合、その授業の毎時間のさいごに、その授業のコードを提出する場合があるので、授業用のコードは書き換えずに、授業用コードを自分流コードにコピーペーストして、その自分流コードを書き換えてみて試行錯誤しましょう。 プログラミングの学習では、正解のコードを、覚えることは、けっして、学習の目的ではありません。そもそもコードは、無限のパターンがあるので、覚えようと思っても不可能です。 プログラミングの学習は、もしもミスのあるコードを書いてしまった場合に、そのミスを探し当てられるようになるために試行錯誤することが、学習の目的なのです。 さて、書籍での学習で、数分ほどの書き換えによるコードの試行錯誤が終わったら、書籍をそのまま次のページへと読み進んでください。 そして、また新しいコードが出てきたら、同様に入力してプログラムを実行してみます。なお、新しいコードの入力の際、たいていは、前のページで入力した前回のコードに近いコード前回のコードをコピーペーストして、それをもとに、いまのページの新コードへと書き換えても、かまいません。 いちいち、まったくゼロから新コードを書き始める必要は、ありません。 けっして「コピーペーストをして入力作業を減らしても、技術が身に付くのだろうか?」と心配する必要はありません。なぜなら、たいていの初心者は、たとえコピーペーストをして作業を減らした場合ですら、入力ミスをしてしまうことが多く、なにがしかのエラーを起こしてしまうからです。 裏をかえせば、コピーペーストをして入力作業を減らしてもエラーを起こさずに正常にプログラムを実行できるようなコードをすぐに書けるなら、すでにアナタは、そのページの新コードが、だいたい分かっているのです。 ともかく、コードを実行してみてエラーが出ても、エラーがなくなるまで直しましょう。もし、エラーがなく正常にプログラムが実行されたら、また自分流に書き換えを数分ほどしてみて、試行錯誤します。 それが終わったら、次のページへと読み進めます。 高校生の範囲なら、このような練習方法でも、充分です。 もし高校でJavaScriptや(プログラミング言語ではないが)HTMLなどを習う場合の練習方法も、だいたい、このような感じで練習すれば、高校生なら充分でしょう。
関連項目
- ^ 令和三年現在、『社会と情報』・『情報の科学』から『情報I』(必須)・『情報II』(選択)への移行途中で先行実施期間中です。今後の学習指導要領改訂スケジュール平成28年8月26日 中央教育審議会 教育課程部会 資料3
- ^ 検定教科書の購入方法については、記事『小学校・中学校・高等学校の学習/検定教科書の購入方法』を参考のこと。
- ^ ASCIIコードと表記されることがあるが、ASCIIはAmerican Standard Code for Information Interchangeのアクロニムのなので「ASCIIコード」では「情報交換用米国標準コードコード」となってしまう。
- ^ アセンブリ言語を扱っているが、しかし「アセンブリ」の用語は教科書にはみられない。
- ^ 「ベン図」という用語は、教科書にはみられない。
- ^ 6.0 6.1 日本文教出版