![見出し画像](https://assets.st-note.com/production/uploads/images/87558410/rectangle_large_type_2_16430b754e361fef4ff5c817a094ed02.png?width=1200)
プログラミングの基本 〜アルゴリズムの具体例:配列の合計と最大値〜
プログラミングが学校で必修科目になりました。今後は世界で拡大するであろう「情報化社会」の中で、日本が存在感を発揮できることを期待する。そのための取り組みです。
プログラミングはどんな問題を扱うかで、使うべき言語が異なります。一方で、言語が異なれど必要な知識として共通する部分もあります。それは「アルゴリズム」および「データ構造」でした。
それぞれの基本的な話はこちらで紹介しました。
今回は「アルゴリズム」の具体例を紹介する話の2回目で、配列の合計と最大値を求めるアルゴリズムについて考えます。
プログラミングで配列を使うアルゴリズムは沢山ありますが、それらの基になる重要なアルゴリズムです。ぜひ覚えておきましょう。
![](https://assets.st-note.com/img/1664008777775-wFQHlEK2Lb.png?width=1200)
配列の値の合計を求める
まずは、配列の数値を合計して結果を出力するアルゴリズムを見てみます。
配列の数値の合計は、配列の最初の値から最後の値までを足していき、その結果を出力するだけの単純なものです。具体的な処理は以下のようになります。ここで使われる配列の配列名はaとします。
合計値を入れる変数「sum」と配列の要素番号を表す変数nを用意し、それぞれに0を代入する。
sumに配列aのn番目の要素を足す。
nに1を足す。
nが配列の最後の要素番号を超えていなければ、2番目の手順に戻る。
合計値として、変数sumの値を出力する。
![](https://assets.st-note.com/img/1664010539552-BGBA7R0hCn.png?width=1200)
以上が配列の数値の合計を求めるアルゴリズムの流れです。手順2〜4は繰り返しの構文であること、変数nが最後の要素番号を超えるまで繰り返すこと、この2点を忘れないようにします。
![](https://assets.st-note.com/img/1664011110385-2Dddg0t1hl.png?width=1200)
配列の最大値を求める
続いて、配列の最大値を探し出すアルゴリズムを紹介します。先ほどの合計を求める時と同様に、配列の名前をaとします。
最大値を入れる変数「max」と配列の要素番号を表す変数nを用意し、nに0を代入し、maxには配列aの0番目の値を入れる。
nに1を足す。
変数maxとaのn番目の要素を比較し、もしも後者の方が大きければ、maxにその値を代入する。
nが配列の最後の要素番号を超えていなければ、手順2に戻る。
最大値として、変数maxの値を出力する。
![](https://assets.st-note.com/img/1664011339355-O96yR6y3tL.png?width=1200)
以上が配列の最大値を求めるアルゴリズムです。仮初の最大値を決めて、それよりも大きい値が出れば、最大値を入れ替えます。すると、最後には自然と全体の最大値が代入されている、という仕掛けです。
ここでも、手順2〜4は繰り返しの構文であること、変数nが最後の要素番号を超えるまで繰り返すこと、この2点に注意します。
![](https://assets.st-note.com/img/1664011789094-OAGNxS3CRD.png?width=1200)
おわりに
今回は「アルゴリズム」の一例として、配列の値の合計と最大値を求める問題を扱いました。
以上のようなアルゴリズムを応用すれば、配列の数値の平均値を求めたり、最小値を求めたりするようなアルゴリズムも構築できます。また、配列の数値を並べかえるアルゴリズムにも応用可能です。
どちらもシンプルですが、非常に応用範囲の広いアルゴリズムです。
前回もお伝えした通り、まずは着実にひとつずつ理解しながら、プログラミングの作業をすること。数をこなしていけば、自然と身につきますので、ぜひチャレンンジしてみてください。
-------------------------
最後まで読んでいただき、ありがとうございます。実際は非定期ですが、毎日更新する気持ちで取り組んでいます。あなたの人生の新たな1ページに寄り添えたら幸いです。何卒よろしくお願いいたします。
-------------------------
⭐︎⭐︎⭐︎ プロフィール ⭐︎⭐︎⭐︎
⭐︎⭐︎⭐︎ ロードマップ ⭐︎⭐︎⭐︎
この記事が気に入ったらサポートをしてみませんか?