質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

5回答

2705閲覧

プログラムはなぜ動き続けることができるのでしょうか

RM_4

総合スコア85

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

9グッド

1クリップ

投稿2016/02/24 06:30

プログラムというのは、コードを書きますよね。
それで、先頭から読んでいって、ページの最後にたどり着いてしまったら、もうそこで終わるはずだと思うんです。

なぜゲームなどはプレイしてる以上コードを読み続けることができるのが不思議です。

プログラムは一度読んだら終わりではないですか?
また、上から規則正しく読んでいくのにその順番にそった行動をプレイヤーがとらなかったとしてもゲームとして動くことができるのはなぜでしょうか

takotakot, dsk, daisuke7, raccy, afroscript, mint.cherry, musix55, ikuwow, yohhoy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

ループ処理、それも無限ループを利用しています。

一番ミニマムに考えると、例えば無限ループの中でボタンの状態を監視する状態を作ったと仮定してみてください。

無限ループなのでずーっとボタンの状態を監視し続けます。
しかしあるとき、ユーザーがボタンを押したとしましょう。
すると次のループのチェックのタイミングではボタンが「押された」と検知できます。

そしてもし、その状態を元にif文を使って分岐処理を書いていたら、ユーザーがボタンを押している間だけ別の処理をする、ということが実現できますね。

この基本的な考えを元にゲームは構築されています。
ゲームの場合はもっと複雑に様々な処理が必要です。
ユーザーの入力から始まり、物理演算を行い、さらにはその状態を画面に描画しなければなりません。

そうした諸々の処理をするループを「ゲームループ」と呼んだりします。

要は無限ループを利用して画面に表示される内容を常にアップデートし続けている、と考えるとイメージしやすいかと思います。

投稿2016/02/24 06:48

edo_m18

総合スコア2283

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RM_4

2016/02/24 07:50

とてもわかりやすく教えてくださりありがとうございます! >>すると次のループのチェックのタイミングではボタンが「押された」と検知できます。 ここがずっと不思議でわからなかったところです 無限ループで突然の処理に対応していたのですか! 例を作って教えてくださったことにより理解できました! ゲームループというのはとても難しそうですね…! 調べてみます
guest

0

いい質問ですね。RMさんの質問は新しい発見ができて私は好きです。
他の回答者にもあるようにループしているから、条件分岐しているからですね。

例えば、windowsPCにUSBを挿したら自動検知してくれますよね。
プログラムはUSBがささるまで自動検知する。実行中…(無限ループ処理)。
ささったら検知してマウントしてくれます。(条件分岐)。

これがもし無限ループしない場合はwindows立ち上げます。
USBを検知するプログラムが働きます。USBがありませんでした。プログラムを終了します。
後になってUSBをさします。プログラムはすでに終了しているため(実行していないため)検知してくれません。

投稿2016/02/24 07:41

mint.cherry

総合スコア284

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RM_4

2016/02/24 07:51

USBという初心者でも身近なものを例にして教えてくださったことで頭に入りました! ありがとうございます! >>これがもし無限ループしない場合はwindows立ち上げます。 USBを検知するプログラムが働きます。USBがありませんでした。プログラムを終了します。 パソコンというのは想像以上に忙しい仕事をしているのですね…!!
RM_4

2016/02/24 07:53

そしてプロからみるとくだらない質問でしたが質問にたいして新しい発見があるなどフォローしてくださりありがとうございました
guest

0

プログラムは大きく分けて「順次」「分岐」「反復」という構造があります。

「先頭から順に実行していく」は「順次」です。
「みかんを食べる、りんごを食べる、バナナを食べる」という具合。

「分岐」は条件によってやることを変えていきます。
「みかんがあったらみかんを食べる、りんごがあったらりんごを食べる」

「反復」は繰り返す構造です。
「りんごがある限りりんごを食べる、とにかくみかんを貰えるまで待って、貰えたら食べる」…

特に最後の「反復」があるので、プログラムはいきなり終わることがなく実行し続けます。

投稿2016/03/01 05:30

daisuke7

総合スコア1563

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

条件分岐してるから。

投稿2016/02/24 06:47

rossi46hiro

総合スコア992

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RM_4

2016/02/24 07:53

お返事ありがとうございます
guest

0

ループ処理してるから。

投稿2016/02/24 06:31

ogaaaan

総合スコア765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RM_4

2016/02/24 07:54

お返事ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問