サブルーチンとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > デジタル大辞泉 > サブルーチンの意味・解説 

サブルーチン【subroutine】

読み方:さぶるーちん

コンピュータープログラムの中で、共通した部分ひとまとめにし、主プログラムか分岐させたもの。


サブルーチン

【英】subroutine

サブルーチンとは、随時利用される目的決まった小さなプログラムのことである。プログラム記述する際の基本的な技法の一つで、さまざまな場面で利用できる処理手順ひとまとめしたものにあたる。

同じ目的の処理を何回か行わせる場合、その部分一つプログラム(サブルーチン)として独立させ、あとから呼び出して(サブルーチンコール)使えるようにすれば、同じ処理のプログラム何回も書く手間省けプログラム全体も見やすくなる

このようにすることにより、プログラム全体開発効率向上するだけでなく、デバック容易になり、記憶領域容量節約にもつながる。

なお、サブルーチンには、オープンサブルーチンとクローズドサブルーチンの2つがあるが、一般にはクローズドサブルーチンをサブルーチンと呼んでいる。これに対して全体プログラム構成する基本的な流れは主プログラムメインルーチン)と呼ばれる

プログラミングのほかの用語一覧
コーディング:  論理演算命令  ルーチン  再入可能  サブルーチン  再帰呼び出し  サイクルタイム  サブルーチンライブラリ

サブルーチン

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/10/21 16:13 UTC 版)

プログラミングにおけるサブルーチン: subroutine)は、プログラム中で意味や内容がまとまっている作業をひとつにまとめたものである。サブプログラムあるいは副プログラム: subprogram[1]とも呼ばれ、単に「ルーチン」(: routine)と呼ばれることもある。プログラミング言語によっては、関数: function)やプロシージャあるいは手続き: procedure)とも呼ばれる。


注釈

  1. ^ C言語と違い、中身の記述すなわち定義まで含むものもPascalでは「宣言」と言う。
  2. ^ 標準化以前(K&R初版時代のC)は、省略した場合のデフォルトとしてintを返すと解釈される仕様だったという経緯があり、互換性を保つためにそれが標準とされたため、値を返さない場合にはvoidを書いて明示しなければならない、という仕様になっている。
  3. ^ http://perldoc.perl.org/perlsub.html には return statement とあるが、return 自体の解説は http://perldoc.perl.org/functions/return.html のように関数扱いになっている。
  4. ^ オセロゲームの盤面先読みのコードは、以前、基本情報技術者試験に出題されたことがあり教科書や問題集などでも掲載されるようになっていた。

出典

  1. ^ a b c d 大滝みや子『2020年版 基本情報技術者 標準教科書』オーム社、2019年。pp.95-96「手続きと関数」「再帰呼び出し」の章
  2. ^ 電子情報通信学会『知識の森』 - 6 群「基礎理論とハードウェア」 - 3 編「アルゴリズムとデータ構造」 - 1 章「アルゴリズムとアルゴリズム解析」
  3. ^ 問49 変数を引数として渡しても、サブルーチンの実行後に変数の値が変更されないことが保証されているものはどれか。 | 日経クロステック(xTECH)
  4. ^ Calling Conventions | Microsoft Learn
  5. ^ Argument Passing and Naming Conventions | Microsoft Learn
  6. ^ x64 calling convention | Microsoft Learn
  7. ^ Overview of ARM ABI Conventions | Microsoft Learn
  8. ^ Working with DLLs | Microsoft Learn
  9. ^ Developing DLLs | Microsoft Learn
  10. ^ a b c d Brian W. Kernighan / Dennis M. Ritchie "The C Programming Language, Second Edition", 1988. ISBN 0-13-110362-8, pp.24-27 "Functions".
  11. ^ Writing a property procedure (VBA) | Microsoft Learn
  12. ^ Property プロシージャ - Visual Basic | Microsoft Learn
  13. ^ IIf function (Visual Basic for Applications) | Microsoft Docs
  14. ^ 自分から自分を呼ぶ? Pythonで「再帰呼び出し」の不思議を体験 | 日経クロステック(xTECH)
  15. ^ 『令和04年 栢木先生の基本情報技術者教室』技術評論社、2021年、p.209「再帰的な関数の例」
  16. ^ .NET TIPS [ASP.NET]データベースからツリー・メニューを生成するには? - C# VB.NET Webフォーム - @IT
  17. ^ Chess programming
  18. ^ 将棋ソフト作成入門
  19. ^ 再帰呼び出し
  20. ^ 囲碁プログラムの作り方(基本編)


「サブルーチン」の続きの解説一覧

サブルーチン

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/12/08 14:07 UTC 版)

Simulation RPG Construction」の記事における「サブルーチン」の解説

シナリオ組み込んで使用するファイル拡張子は「.eve」であり、シナリオ同様テキストファイルであるためテキストエディタでの編集が可能。シナリオシステム拡充するために利用されている場合多く第三者流用可能なようにして配布されているものも多い。 旧バージョンでは「インクルード」と呼ばれており、現在でもこちらの呼称使用するユーザーは多い。

※この「サブルーチン」の解説は、「Simulation RPG Construction」の解説の一部です。
「サブルーチン」を含む「Simulation RPG Construction」の記事については、「Simulation RPG Construction」の概要を参照ください。


サブルーチン

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/16 13:57 UTC 版)

PDP-8」の記事における「サブルーチン」の解説

PDP-8では汎用スタックアーキテクチャサポートしていないため、サブルーチンを呼び出すときや割り込み発生したときのコンテキスト(プログラムカウンタACなどのレジスタ値)をセーブする方法確立されていないその代わりリターンアドレスとしてのプログラムカウンタ値がターゲットサブルーチンの先頭ワード格納される。従って、間接ジャンプ命令でサブルーチンから戻ることができる。 以下のプログラムはサブルーチンを使うように改造した "Hello world" である。JMS命令でサブルーチンに飛び込むと、OUT1:の位置にある0が書き換えられる。 *200 / Set assembly origin (load address) HELLO, CLA CLL / Clear the AC and the Link bit TAD (DATA-1) / Point AC just *BEFORE* the data (accounting for later pre-increment behavior) DCA 10 / Put that into one of ten auto-pre-increment memory locations LOOP, TAD I 10 / Pre-increment mem location 10, fetch indirect to get the next character of our message SNA / Skip on non-zero AC HLT / Else halt at end of message JMS OUT1 / Write out one character JMP LOOP / And loop back for more OUT1, 0 / Will be replaced by caller's updated PC TSF / Skip if printer ready JMP .-1 / Wait for flag TLS / Send the character in the AC CLA CLL / Clear AC and Link for next pass JMP I OUT1 / Return to caller DATA, "H / A well-known message "e / "l / NOTE: "l / "o / Strings in PAL-8 and PAL-III were "sixbit" ", / To use ASCII, we'll have to spell that out, character by character " / "w / "o / "r / "l / "d / "! / 015 / 012 / 0 / Mark the end of our .ASCIZ string ('cause .ASCIZ hadn't been invented yet!) リエントラント性や再帰呼び出し実現しようとすると、プログラマ自分コールスタック用意しリターンアドレススタックセーブしなければならないまた、ROMを使うのも困難である(プログラム書き換え可能でないとサブルーチンを使えないため)。ROMプログラム格納する場合、以下のような回避方法があった。 実行時にはRAMコピーする RAM一部内蔵したROM使い、各ワードフラグ設定してRAM代替使用するかどうか指定する要するに非常に特殊なメモリ使用する)。 サブルーチンを全く使わない。またはJMS命令代わりに次のようなコード使い書き換え可能なメモリリターンアドレスを置く。 JUMPL, DCA TEMP / Deposit the accumulator in some temporary location TAD JUMPL+3 / Load the return address into the accumulator: hard coded JMP SUBRO / Go to the subroutine, and have it handle jumping back JUMPL+4 / Return address JMS命令使用するデバッグ難しくなる例えば、リターンアドレス書き換えによって無限ループ陥ることもあるし、サブルーチンのアドレス間違うとサブルーチンの先頭ではないワードリターンアドレス書き換えてしまうこともある。こういった誤り実行してみないとわからないこともある。

※この「サブルーチン」の解説は、「PDP-8」の解説の一部です。
「サブルーチン」を含む「PDP-8」の記事については、「PDP-8」の概要を参照ください。


サブルーチン

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/07/23 09:22 UTC 版)

制御構造」の記事における「サブルーチン」の解説

詳細は「サブルーチン」を参照 サブルーチンには、手続きルーチンプロシージャ関数(特に値を返す場合)、メソッド(特に何らかのクラス属す場合)など様々な名称がある。 1950年代コンピュータメモリは非常に小さかったため、サブルーチンの第一目的プログラムサイズ削減することにあった。サブルーチンとして書かれコードプログラム内のあちこちから使用することでプログラム全体のコードサイズを削減したのである。現在ではサブルーチンはプログラム構造化するために使われる。すなわち、特定のアルゴリズム分離したり、特定のデータアクセスするメソッド隠蔽したりする。多数プログラマ共同プログラム開発をする場合、サブルーチンはある種モジュール性提供し仕事分割点の役割も果たす。 サブルーチンに引数があればさらに便利になる多くプログラミング言語には平方根求めるサブルーチンが組み込まれており、引数として平方根求めたい数を与えることができる。 プログラミング言語によっては再帰呼び出しが可能である。つまり、サブルーチンが直接的あるいは間接的に自分自身呼び出すことができる。クイックソート木構造探索するアルゴリズムなどは再帰使った方が素直に表現できる。 サブルーチンを使用すると、引数受け渡し、サブルーチン呼び出しコールスタック処理、サブルーチンからの復帰などのオーバヘッドによりプログラム性能若干低下する実際オーバヘッドハードウェアおよびソフトウェアアーキテクチャ依存するコンパイラによってはインライン展開効果的に使用してオーバヘッド低減を図るものもある。 プログラミング言語によってはサブルーチンの物理的な最後尾到達しないとサブルーチンから復帰できない方式のものもある。他の言語には returnexit 文がある。これはサブルーチンの最後尾への分岐等価であり、制御構造複雑化するものではない。必要に応じて複数のそれらの文をサブルーチン内に置くことができる。

※この「サブルーチン」の解説は、「制御構造」の解説の一部です。
「サブルーチン」を含む「制御構造」の記事については、「制御構造」の概要を参照ください。


サブルーチン

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/16 16:17 UTC 版)

レジスタ (コンピュータ)」の記事における「サブルーチン」の解説

サブルーチンとの情報やりとり引数返り値)は、プログラムモジュール分割してコンパイルできるようにするために、あらかじめ定めておく必要があり、呼出規約と言う呼出規約にはいろいろあるが、レジスタ多数あるマシンであればレジスタやりとりするのが効率的であり、レジスタ渡しと言うバークレーRISC(w:Berkeley RISC)に影響されSPARCなどのRISCプロセッサEPICアーキテクチャには、アーキテクチャ的にこれを支援するレジスタ・ウィンドウ備える。レジスタ渡し対しスタックで渡すものをスタック渡しと言う引数スタック積んでサブルーチンを呼び出すが、返り値レジスタアキュムレータ)で返すことが多い。(同じような「何々渡し」という語を使うが、評価戦略直接の関係は無いので注意PCポピュラーx86場合(w:X86 calling conventions)、IA-32およびそれより前のプロセッサでは、コンパイラ生成するコードではスタック渡し多かったが、最適化進んだコンパイラではMicrosoft Cの__fastcall構文レジスタ渡し明示したり、可能な限りレジスタ渡しをするコード生成するLSI C-86もある。x64にはMicrosoft x64System V AMD642種類があるが、どちらもレジスタ渡し基本である。 可変長引数レジスタ渡しするのは困難であるため、可変長引数場合にはスタック渡しにすることも多い。但し、呼び出し規約等で引渡し方法をきちんと定義し、またそれに沿ったプログラミング行わないと、齟齬生じてプログラム誤動作引き起こす例えC言語において、ヘッダー適切にincludeせずにプロトタイプ宣言なしでprintf関数を呼ぶと暴走しhello worldすら動かない事例引き起こす

※この「サブルーチン」の解説は、「レジスタ (コンピュータ)」の解説の一部です。
「サブルーチン」を含む「レジスタ (コンピュータ)」の記事については、「レジスタ (コンピュータ)」の概要を参照ください。

ウィキペディア小見出し辞書の「サブルーチン」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ

サブルーチン

出典:『Wiktionary』 (2021/08/16 04:20 UTC 版)

異表記・別形

名詞

サブルーチン

  1. (プログラミング) コンピュータプログラムの、ひとまとまり処理を果たす部分ルーチン

語源

英語: subroutine

発音(?)

サ↗ブル↘ーチン

類義語

対義語

参照


「サブルーチン」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「サブルーチン」の関連用語

サブルーチンのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



サブルーチンのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2024 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリサブルーチンの記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのサブルーチン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのSimulation RPG Construction (改訂履歴)、PDP-8 (改訂履歴)、制御構造 (改訂履歴)、レジスタ (コンピュータ) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。
Text is available under Creative Commons Attribution-ShareAlike (CC-BY-SA) and/or GNU Free Documentation License (GFDL).
Weblioに掲載されている「Wiktionary日本語版(日本語カテゴリ)」の記事は、Wiktionaryのサブルーチン (改訂履歴)の記事を複製、再配布したものにあたり、Creative Commons Attribution-ShareAlike (CC-BY-SA)もしくはGNU Free Documentation Licenseというライセンスの下で提供されています。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2024 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2024 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2024 GRAS Group, Inc.RSS