
ハジメの一歩会③ 繰り返し処理編
もう3回目ですね、前半戦の最後になります。繰り返し処理編。
BASICから入った自分としては、なんでこんなモノがあるんだ…!と思った思い出もあり、その辺りから解説していこうかな、と思います。
ハジメの一歩会、はじまるよぉーーーー!!
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 3, 2022
#ハジメの一歩会 pic.twitter.com/aTioQDWnzQ
第2回の条件分岐については、こちらをご参照ください。
ハジメの一歩会の説明などなど。
まぁ、いい加減聞き飽きた方も多いかな、と思いつつ、初めての方もわずかながらいらっしゃるので、説明だけは毎回欠かさず実施。
でも、だいぶ短縮版でしたね(笑)
#ハジメの一歩会 pic.twitter.com/QbKyFOBfpJ
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 3, 2022
まずは、前回の条件分岐編の復習から。
これまでの回では復習から入らなかったのに、なぜ今回だけ??
今回の繰り返し処理でも条件式を使うので、まずは前回の復習から入ることにしました。
#ハジメの一歩会 pic.twitter.com/x4m0RZT6hF
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 3, 2022
繰り返し処理の意味、なぜ必要なのか…を微妙に語ります。
下の例だと、変数aに10を代入し続ける無限ループです。
繰り返し処理を抜ける条件が"True"となっているため、常に条件が満たされれており、永遠にループし続けます。
#ハジメの一歩会 pic.twitter.com/aSeyZ6migV
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 3, 2022
繰り返し、ExcelやAccessVBAから入ると必要な場面がイメージしやすかったりするのかな🤔#ハジメの一歩会
— Yuzunoki (@y_ibris) October 3, 2022
VBAで無限ループするとエクセルが全滅するイメージ
— UT@BackendEngineer&TechnicalDonor (@hidemusiam) October 3, 2022
そして保存していないブックも一緒に旅立っていきます#ハジメの一歩会
こちらは変数aが100以下の間ループする処理になります。aをカウントアップしています。なんらかの計算のためにカウントアップするならわかるのですが、下記の処理だけだと意味がない処理ですよね。
#ハジメの一歩会 pic.twitter.com/ghIAq2byfk
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 3, 2022
これならどうでしょうか?
前半部では、「今日は、」「明日は、」等を出力。
後半部では、取得したyoubiの値によって、燃えるゴミ、燃えないゴミ等出力します。
さて、ここで問題です。
①今日が金曜日なら、どうなるでしょう?
②繰り返し処理を使わずにプログラムを組むと、どうなりますか?
どーでもいいのですが、Space開催時に話題になったので、忘備録として。
プログラム中の「{」の中かっこ、なんて読むのか知ってますか?
「カーリーブラケット」と呼ぶらしいのですが、なんど聞いても「かーでぃーブラケット」に聞こえてしまい、妙な親近感を覚えました(笑)
#ハジメの一歩会 pic.twitter.com/PbeO3vlKCT
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 3, 2022
かーでぃーブラケットに聞こえた笑
— あきイカ@よわよわ🦑イカエンジニアYouTuber (@akiikasakiika) October 3, 2022
#ハジメの一歩会
答えは下のようになります。
問1の方は、順番にロジックを追っていけば答えは見えてきますかね。
前半部で「今日は、」とか「明日は、」と表示するために、今がいつを指しているのかをループの変数iを使って判断しています。
明後日以降は、「何曜日は、」と変数youbiも使っているのがポイントですかね。
問2の方は、繰り返し処理を使わずにロジックを書いたパターンです。ここでは7回同じ処理を繰り返しますが、繰り返し処理を使わないため、同じようなコードを7回書かなければならないことに注意してください。
7回書くというこては、それだけバグが潜むリスクが高くなるということです。前回の名言「分岐は品質の分岐点」とありましたね!
7回も同じような分岐を書けば、それだけ品質にも悪影響を与える可能性があります。可読性とのトレードオフですが、7回も繰り返して可読性が良いわけないので、ここは繰り返し処理で実施した方がGoodですよね!
また、例えば1箇所でバグが見つかってそこを修正したとします。ということは、残りの6回分についても同じように修正しないといけません。修正するということは、余分な文字を消してしまったり、ゴミを追加してしまったりすることもある、ということです。
また、5回分は修正したけど、1つを修正し忘れるなんて可能性もありますよね。
なので、プログラムは可読性を保ちつつも、短い方が良いのです!
#ハジメの一歩会 pic.twitter.com/C6wnea5KBy
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 3, 2022
繰り返しを使わないとループ内の処理をループの回数だけコーディングしないといけない
— UT@BackendEngineer&TechnicalDonor (@hidemusiam) October 3, 2022
コード量が増えれば増える程、変更が発生した時に修正するコード量も比例する#ハジメの一歩会
同じ処理を2箇所以上に書かないために #ハジメの一歩会
— Haruka Oh! (@sylphied_) October 3, 2022
ということで、繰り返し処理といえばこの2つですね。
他にもいろいろとあるのですが、この基本の2つ、for文とwhile文に毛が生えたようなものなので、ここではあえてこの2つだけ。
実運用だと、for文の方が利用する回数多いかもしれませんが、パラメータが少なく簡素に記述できるwhile文をメインで紹介させて頂きました。
#ハジメの一歩会 pic.twitter.com/rDOyNaBhYp
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 3, 2022
ループはfor文をよく使うけど
— UT@BackendEngineer&TechnicalDonor (@hidemusiam) October 3, 2022
説明用ではwhile文の方がいいな
っと聞きながら思った#ハジメの一歩会
ちょっと懐古的な話で。
VBではない、昔のBASIC時代、for文とかwhile文とかの繰り返し処理はあまり使わなかったなぁー、という思い出話です。
BASICにはGOTO文というのがあって、これとIF文の組み合わせで繰り返し処理が出来てしまうので、そちらで記述することが多かったですね。
が、構造化プログラムと呼ばれるCが出てくると、GOTO文が非推奨になります。その辺りの理由は下記がわかりやすいです。
今の時代にGOTO文を説明する必要はないのですが、歴史を知ることも1つの勉強になるかな、と思いまして書かせてもらいました。
goto は...
— たな🐼 (@dreams_panda) October 3, 2022
#ハジメの一歩会
goto文なんてあったのか、音楽で言うダルセーニョみたいなことかな #ハジメの一歩会
— yukio@PowerPlatform勉強中 (@yukio_365) October 3, 2022
ということで、変数、条件分岐、繰り返し処理を勉強してきました。ここまでの集大成的な問題を宿題として出してみました!
#ハジメの一歩会 pic.twitter.com/Lwdud1G7xl
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 3, 2022
そして、クロージングです。今週も、Zoom会は金曜を前倒しして木曜に開催となります。
#ハジメの一歩会 pic.twitter.com/jbTy86bnjR
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 3, 2022
まとめ
— UT@BackendEngineer&TechnicalDonor (@hidemusiam) October 3, 2022
1.繰り返しを用いることでプログラムを短縮できる。
2.繰り返しにはwhile文とif文がある
3.繰り返しは条件を満たす場合にループされる#ハジメの一歩会
繰り返しの手法を用いてプログラムを効率よく作成する
— UT@BackendEngineer&TechnicalDonor (@hidemusiam) October 3, 2022
0から1を作るときにはこの基本に従うべきなんだけど
繰り返しがない既存プログラムを修正しないといけない時もある
そういう時は試されてるなと思ってる
関西人だから笑いを取りにいけと#ハジメの一歩会
宿題の回答例です。
会の趣旨を汲んでくれて、いろいろな開発言語、開発ツールで回答をしていただけました!皆さん、回答ありがとうございます!
まさか、COBOLやアセンブラまで出てくるとは思っていませんでした笑

#ハジメの一歩会 の宿題を #PowerApps でやってみた!
— あきイカ@よわよわ🦑イカエンジニアYouTuber (@akiikasakiika) October 3, 2022
(パターン1)
スライダーを使ったループ
速すぎて何が何だかわからないww https://t.co/Hvz528rvxv pic.twitter.com/7oPAgy7cVU
(パターン2)
— あきイカ@よわよわ🦑イカエンジニアYouTuber (@akiikasakiika) October 3, 2022
タイマーコントロールを使ったループ
60を超えたカウントに工夫が必要だった💦#PowerApps はModでした~!
宿題楽しい♬勉強になった~🦑✨#ハジメの一歩会 pic.twitter.com/9j1Ne8Qhgn
PADでやるならこんな感じでしょうか #ハジメの一歩会 https://t.co/kK7yR0nsDh pic.twitter.com/4BycpwL9OZ
— きぬあさ (@kinuasa) October 4, 2022
Switchで処理する場合↓ #ハジメの一歩会 pic.twitter.com/sKVCKI5u95
— きぬあさ (@kinuasa) October 4, 2022
できた! pic.twitter.com/lAwpCw5IbJ
— 水科美菜(自称VTuberな猫又) (@MinaMizushina) October 3, 2022
妹が、やっていたので、JavaScript(ECMAScript)で、作りました!
— 水科梨沙@RPAやります! (@RisaMizushina) October 5, 2022
r(1);
function r(i){
console.log(i+((i%3*(i%4))?"":" "+((i%12)?((i%4)?(i%3?"":"3"):"4"):"3と4")+"の倍数"));
if(i<100) r(++i);
}
シンプル! https://t.co/tinZb1QnrU pic.twitter.com/kXpf15ZQcp
BASIC版#ハジメの一歩会 https://t.co/7ovO2lTirB
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 5, 2022
#ハジメの一歩会
— yukio@PowerPlatform勉強中 (@yukio_365) October 6, 2022
学生時代以来、およそ10年ぶりにC言語で書いてみました。忘れすぎているので、調べながら思い出しながらどうにかできました。 https://t.co/goziiqmccH pic.twitter.com/yNqhewQblU
Cは既出かなhttps://t.co/dmaG4V8npc https://t.co/4aBXQGgqFM pic.twitter.com/Oc9l3QpKQV
— fujita nozomu (@fujitanozomu) October 5, 2022
出力ルーチン用意して試してみたところ一発動作しました。流石だなあhttps://t.co/gcbdYcaAIw pic.twitter.com/5ycedJXw2z
— fujita nozomu (@fujitanozomu) October 6, 2022
アセンブラ版#ハジメの一歩会 https://t.co/s2rcnInK3Z
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 5, 2022
COBOL版#ハジメの一歩会 https://t.co/YwuySCBO8e
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 5, 2022
課題でけましたー。
— ななもじ (@sumiika88) October 4, 2022
chunk関数使わなかったです。アホになるのもこれが今の限界。画像列で遊ぼうと思ったら面倒そうだったのでまた今度。
公倍数の求め方を調べちゃった。数学が足りないかと思ってたけど算数まで戻らなきゃでした。
#ハジメの一歩会 pic.twitter.com/cQHk0pGejn
先生出来ました!
— Miyake Mito (@MiTo60448639) October 5, 2022
(ついでに世界のナベアツ機能もつけときました)
#ハジメの一歩会 pic.twitter.com/0SeD23W8Zq
誰か既にやってそうだけど、RPA(UiPath)https://t.co/Gj85R2tzLn https://t.co/jRGSbicE9L pic.twitter.com/lmtHZbMRdn
— 水科美菜(自称VTuberな猫又) (@MinaMizushina) October 5, 2022
全然誰もやっていなさそうだけど、RPA(Automation Anywhere A360)https://t.co/kJOr8zNFXA https://t.co/jRGSbicE9L pic.twitter.com/EJvYqRskiM
— 水科美菜(自称VTuberな猫又) (@MinaMizushina) October 5, 2022
GAS❎LINE notify#ハジメの一歩会 https://t.co/Vm2YwveCRD pic.twitter.com/N93ckPDaqB
— UT@BackendEngineer&TechnicalDonor (@hidemusiam) October 5, 2022
ソースコードを公開します
— UT@BackendEngineer&TechnicalDonor (@hidemusiam) October 11, 2022
2022.10.03 宿題 #ハジメの一歩会https://t.co/jWSfeMeZrv #ReviewMe #レビューミー #GAS
Ichigojam BASICで書いてみたhttps://t.co/N9lnqvN2dP https://t.co/4aBXQGgqFM pic.twitter.com/QrqUPw52GF
— fujita nozomu (@fujitanozomu) October 5, 2022
宿題 gasでやってみました。
— はんなり@バカンスなう (@hannarirpa) October 6, 2022
やっていないと、色々忘れてますね。
#ハジメの一歩会 pic.twitter.com/lBVopZWxS5
え、宿題!? 開発環境なにかあるっけ(キョロキョロ)...
— みのっち (@tw_minoru) October 6, 2022
あ、ExcelのVBAがある。 #ハジメの一歩会 pic.twitter.com/24I8PEmIWw
#ハジメの一歩会
— Miyuki (@miyuki_uk) October 6, 2022
宿題やりました!
すっごい久しぶりにExcel VBA触りました。
みのっちさんと同じ。🍀
…とはいうものの、はじめメッセージボックスにしたら嫌って言うほどOKをクリックする羽目になって🤣、そりゃそうだな、ってDebug.Printに変更。 https://t.co/t2ySYtWdym
繰り返し回の宿題
— Yuzunoki (@y_ibris) October 6, 2022
シンプルにvbsで pic.twitter.com/j5m5rLJrqL
あんまりうまくない感じだけどAccessの更新クエリで pic.twitter.com/9XNh1Y0QHb
— Yuzunoki (@y_ibris) October 6, 2022
PowerShell
— Yuzunoki (@y_ibris) October 6, 2022
(普段使わないからめちゃくちゃググりながら……) pic.twitter.com/qJ2GW5zjH7
i++ みたいなカウントアップをしなくていいところが、pythonの好きなところなんだもん…!! pic.twitter.com/pVcNjw9sd7
— さのちひろ | 外資ITサバイバル英語 | IQぼっち (@IQ_Bocchi) October 7, 2022
A360だからできる方法(?)
— みなみん (@libon0412) October 8, 2022
表示ではなくCSVに書き出す!#ハジメの一歩会 https://t.co/tnZ5Qm0ZNa pic.twitter.com/kCdVGYlWBx
そんなこと言われたら~やってしまいます( ̄ー ̄)ニヤリ
— 出戻りガツオ🐟 (@DemodoriGatsuo) October 4, 2022
Python(PyScript) + Google Apps ScriptのサーバレスWebアプリバージョンです🐟✨
(noteのネタにしょ🐟✨) pic.twitter.com/KRAULteQUk
ちなみに、出戻りガツオさんのnote記事はこちら。
第3回の宿題をPyScript + GASでやってみたレポートです🐟✨#ハジメの一歩会 #Python #GoogleAppsScript
— 出戻りガツオ🐟 (@DemodoriGatsuo) October 4, 2022
かーでぃさんのハジメの一歩会の宿題をPyScript(Python)とGoogle Apps Scriptの合わせ技でドヤ顔してみる|出戻りガツオ #note #クリエイターフェス https://t.co/yccKx2oAWJ
また、仕様を日本語で書くとコードを生成してくれるAIサービスがβ版として提供されています。
さっそく、この問題をPythonでトライしてみたところ、見事にコード生成できました!
AIについては、ITmediaの記事を参照してください。
これも日本語で仕様を書いたらPythonのコード出来た。
— かーでぃ@ガノタなIoTプロフェッショナル (@_0447222690292) October 5, 2022
………凄い!!#ハジメの一歩会 https://t.co/JTLlHhfV6V pic.twitter.com/JwZHpdeecO
イベント資料
いいなと思ったら応援しよう!
