今プログラムの仕様書を眺めています。
機能概要を説明しているところでINPUTとOUTPUTという言葉が出てきました。
言葉から連想するとINPUTはプログラムにインプットするものでOUTPUTはプログラムがどこかにアウトプットするものという感じがします。

しかし、ほんとの所はどうなんでしょうか。性格に意味を掴み取りたいです。
どなたか教えてください。よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

こんにちわ



まぁ、大体そんなところだと思います。
INPUTはプログラムの外側からプログラムに渡されるデータで、
OUTPUTはプログラムが表示・作成するデータのことかと。

例えば、あるデータベースを検索して、その結果を
帳票の形にまとめて印刷するプログラムの場合、
データベース上で検索する条件はユーザーが指定しますよね。
住所はこれで、とか日付は何日でとか金額はこれ以下で・・・とか。
これがINPUTです。そして、条件を入れた後で「印刷」ボタンを押すと、
検索が始まって、プリンタから帳票が出てくる。これがOUTPUTです。

INPUT/OUTPUTはこれだけではありません。
ユーザーがボタンを押す・・・と言うのはINPUTですし、
プログラムがダイアログを表示する・・・と言うのはOUTPUTです。

プログラム以外からプログラムに対して処理をする(条件入力やボタンの押下)
のがINPUTで、プログラムからプログラム以外に処理をする
(ダイアログを出すや帳票の印刷)のがOUTPUTです。

うーん、いまいちな説明ですがそんな感じ(笑
詳細は専門家にまかせます。
    • good
    • 0

No.3のymmasayanです。

舌足らずで誤解を招いたようですね。

>仕様書であれば、本来、想像力を発揮してはならないと考えます。
>仕様書である限り、INPUT、OUTPUTが何を指すかは、明瞭にすべきだと思います。
>従って、仕様書を書いた人に確認をする(仕様書に定義を追加してもらう)
ということが必要ではないでしょうか。

一々ごもっともです。本来基本的にはそうあるべきですが、業界用語ならぬ暗黙の業界(ローカル:社内)常識もあり、ある程度はそれを読み取れる常識と努力も必要だということを申し上げたつもりです。それでも疑問なら問いただしたり、書き直してもらうことは当然必要です。
不完全な仕様書、一人よがりの仕様書が多すぎることとは別の問題として申し上げたつもりです。
 
    • good
    • 0

仕様書であれば、本来、想像力を発揮してはならないと考えます。



INPUT、OUTOUTには、さまざまな意味を含めることが出来ると思いますが、
仕様書である限り、INPUT、OUTPUTが何を指すかは、明瞭にすべきだと
思います。

従って、仕様書を書いた人に確認をする(仕様書に定義を追加してもらう)
ということが必要ではないでしょうか。
    • good
    • 0

話をややこしくしてしまうかも知れませんが、入力(INPUT)、出力(OUTPUT)という言葉は意味が広く、かつあいまいに使われています。


対象がプログラムのときとモジュールやサブルーチンの時では違う事もあります。
媒体を考えると、キーボード、FD、ファイル(HDD)などが入力で、プリンタ、ディスプレイ、FD、ファイル(HDD)などが出力です。
更に通信も入力、出力に入ります。
厄介なのはファイル(データベースを含む)です。これを入出力(装置)として考えるときとそうでないときがあります。
又サブルーチンやモジュールでは、メモリー内のテーブルを受け渡すときこれを入力、出力と称することもあります。あるいはこれを連絡用ファイルに書いて受け渡しすることもあります。
更に制御関係ではスイッチやランプが入力装置や出力装置になることもあり、プログラムでの扱いも様相が一変します。

今、見ておられる仕様書がどれに相当するかわかりませんが、この辺を踏まえて想像力を駆使し、喝破してください。
    • good
    • 0

仰るように、プログラムにデータが入ってくることをINPUT、プログラムがデータを出力することをOUTPUTと言います。


「何処からデータが来るのか」(ユーザの入力? 外部のファイル? データベースのデータ?) 、「どんなデータが来るのか」等については、その時々での使われ方次第です。


ってことで、その仕様書から読み取るか、仕様書を作成した方に尋ねるしか、そこに書かれている「INPUT」「OUTPUT」の内容を知る術はありません。

仕様書を見て、「何を取り込んでいるのか」「何を書き出しているのか」が分かれば、おのずと「何処から取り込んで何処に書き出すのか」が見えてくると思います。


PS.
説明不足な仕様書って嫌になっちゃいますよね~
書いた本人は「見れば分かる」って思ってるらしいけど、実際は目を皿のようにして見ても何にも分からん(笑)。
…って愚痴っちゃいました(^^;
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qプログラム設計書の書き方

僕は新人SEです。
今、上司の方からあるシステムの基本設計書・システム設計書・プログラム設計書を作り、プログラミングまでしてから単体テスト・結合テストもやるように言われています。(全て1人で)

おそらく経験のある方ならすぐにできてしまうようなシステムで、上司の方も勉強のために全てやらせているようです。

今、基本設計書・システム設計書まではなんとかできて、プログラム設計書の作成に取り掛かりたいのですが、初めての経験で実際のプログラム設計書には何をどのように書いているものなのかも全く見当もつかずにいるので全く何も書けません。

上司さんは今週忙しいようで
「来週見てあげるから自分で調べたりしてやってみて」
と言っています。
ですが、全く何もできずにいるのもイヤなので何かそれらしいものでも書いてみたいのですが…プログラム設計書とは何をどう書いてあるものなのでしょうか?

日本語が書いてあるのかプログラムが書いてあるものなのか…
そういったところからわからないので少しでも何か教えていただきたいです。
宜しくお願いします。

Aベストアンサー

こんにちは。
No.1様のご回答通りなのですが会社によって異なります。
というのを踏まえた上で・・・うちではという回答になりますが

・日付 2009/10/10
・版 初版(その後バージョンアップで改定するため、改定ナンバー必須)
・タイトル 企業情報印刷(ここでは決定済み名称)
・発注仕様書ナンバー(正式にお客さまと契約で決めた発注番号を記載)
・作成者 boo_boo_suu
・使用言語 Visual C++
・使用データベース ORACLE
・使用帳票アプリケーション Crystal Reports
・フロー図(Visioで埋め込み図)
・概要説明 
メインメニューから呼び出され企業情報の印刷条件を入力し、クリスタルレポートの帳票情報から企業情報ファイル(KIGYOU_INFO)ファイルを呼び出し印字します。
・全企業情報が一覧で印字可能である。
・特定一企業(企業コード指定)での印字も可能である。
・一企業が指定された場合は企業情報を画面表示する。

-----------------------------------
で・・・・プログラム仕様書はこのくらい。
命令書ですからコードそのものは打ちません。
これみて作ってもらわないといけないので日本語メインです。

あとはDBの仕様書をみてもらったりしてプログラムのローカルルール、画面サイズ、文字サイズ プロシージャ定義やら定数や変数、フォーム、構造体定義書などプログラム書くときの決まりごとに添ってPGさんに打ってもらっています。
一応、図とかつけてみました。(^-^;;
全体の雰囲気はこんな感じだとご理解いただければ幸いです。
ではでは~。

こんにちは。
No.1様のご回答通りなのですが会社によって異なります。
というのを踏まえた上で・・・うちではという回答になりますが

・日付 2009/10/10
・版 初版(その後バージョンアップで改定するため、改定ナンバー必須)
・タイトル 企業情報印刷(ここでは決定済み名称)
・発注仕様書ナンバー(正式にお客さまと契約で決めた発注番号を記載)
・作成者 boo_boo_suu
・使用言語 Visual C++
・使用データベース ORACLE
・使用帳票アプリケーション Crystal Reports
・フロー図(Visioで...続きを読む

QInner join と Left joinの明確な違いは?

Inner join と Left joinの違いがよくわかりません。
教えてください。

Aベストアンサー

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
4               NULL
5               NULL
6               NULL
の6レコードが出力されますが、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
の3レコードしか出力されません。

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3           ...続きを読む

Q3つの表の外部結合

表A、B、Cの3つがあり、Aのすべての行を出力したいと考えています。
外部結合を用いるのだとは思うのですが、3つの表に対して行う場合の
書き方がわからず困っています。
ご教授いただけないでしょうか?
select * from a,b,c
where a.商品ID =b.商品ID (+) and b.商品ID (+) =c.商品ID (+)
としてみましたが、うまくいきませんでした。

Aベストアンサー

ansi構文の趣旨からいえば、結合条件と絞り込み条件は分けて書くので・・

select *
from a
left join b on (a.商品ID =b.商品ID)
left join c on (b.商品ID =c.商品ID)
where a.年月 = 任意の値

と書くのが一般的でしょうね。

Qシンボルが見つかりませんというエラーが理解できません。

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";

}

public void paint(Graphics g){
g.drawImage(img[index1],350,30,this);
g.drawImage(img[index2],695,30,this);
g.drawString("コンピューター",420,300);
g.drawString("あなた",800,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();

}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;

}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}

public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Imag...続きを読む

Aベストアンサー

「シンボルを見つけられません。」というエラーの下に何か表示がありませんでしたか?そこにヒントがあると考えられます。
シンボルを見つけられませんといエラーが表示される主な理由は4つあります。
(1)クラス、メソッド、変数などの綴りミスや定義していない変数を使用している可能性がある。
(2)コンストラクタを呼び出すときに、newを忘れている可能性がある。(3)公開されていないメンバーを呼び出している可能性がある。
(4)必要なimport文を記述し忘れている可能性がある。
ここでのあなたのエラーは(1)番ではないでしょうか?上記ではimageとなっている変数がimgになっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。

Qモジュールとは何ですか

モジュールとは具体的には何を指しているのか、をお聞きします。

手元のカタカナ語辞典では
「プログラムを、それぞれ特有の機能を持ついくつかの基準単位に分割すること。また、その基準単位。」
と書いてありました。

そうすると、1つ1つのソースファイルを指しているように思えてきます。

いままで私が人がしゃべっているのを聞いてきたところでは、Windowsでいうところの、exeファイルやdllファイルを指しているような気がします。

「モジュール」という言葉は gooの新語辞典にも載っています。
また、コンピュータ用語辞典のようなサイトも見てみました。
それらによると、「ソフトウェア・ハードウェアの部品」だそうです。
しかし、例えば何のことをいっているのかが、分からないのです。

#ファイルなら何でもいいのだろうか。

この言葉の用例を教えていただきたいのです。

============================
過去の質問と回答より。


http://oshiete1.goo.ne.jp/kotaeru.php3?q=302590
回答No.1の補足より。
>モジュールはAccessの標準モジュールのことです

わたしはAccessのことをほとんど知らないので、ハテナです。


http://oshiete1.goo.ne.jp/kotaeru.php3?q=293234
こちらのNo.2の回答では、
dllとは「共通モジュール=ライブラリ」である、
という使い方ですので、例えばdllのことを指しているようです。

モジュールとは具体的には何を指しているのか、をお聞きします。

手元のカタカナ語辞典では
「プログラムを、それぞれ特有の機能を持ついくつかの基準単位に分割すること。また、その基準単位。」
と書いてありました。

そうすると、1つ1つのソースファイルを指しているように思えてきます。

いままで私が人がしゃべっているのを聞いてきたところでは、Windowsでいうところの、exeファイルやdllファイルを指しているような気がします。

「モジュール」という言葉は gooの新語辞典にも載ってい...続きを読む

Aベストアンサー

「モジュール」と言う言葉には「ソフトウェアの部品」という以上の共通概念はありません。
よって、使用される文章の前後関係によって微妙に意味合いが変ってきます。

1.関数、手続き
「mainモジュール」など
2.機能単位でまとめられたライブラリのメンバー
「標準関数ライブラリ(UNIXならlibc.a)に含まれるstdio関係の関数群」など
3.実行ファイルを構築するための個々の素材ファイル
「ソースファイル」、「オブジェクトファイル」、「ライブラリファイル」など
4.実行環境を構成する個々の実行可能ファイル
「exeファイル」、「dllファイル」など
5.(オブジェクト指向型言語において)クラス

モジュールは機能で分類されていると言う保証はありません。
「stdioを構成する個々の関数」を関数モジュールと言う場合もあります。

モジュールと言う単語を使い場合、「関数モジュール」とか「ライブラリモジュール」と言うように、モジュールと言う言葉の曖昧さを保管するような単語と組み合わせて使う用に心がけた方が安全です。

QITa、ITbという言葉の意味を教えてください

おそらくシステム関連の言葉だと思うのですが、ITa、ITbとは何のことでしょうか。
会議中に「アイティーエーは○月まで、アイティービーは○月から」という発言があったのですが、意味がわからないまま流れてしまい、こまっております。
よろしくお願いします。

Aベストアンサー

ITA、ITBとは共にソフト開発を行っている時の開発状況の事をいいます。
ITAとは結合テスト(内部結合テスト)
  自社で開発したシステムを自社内で確認する方法です。

ITAとは結合テスト(外部結合テスト)
  自社で開発したシステムを自社外(主にお客さん)が確認する方法です。

とあるパソコンメーカーが言い始めたと聞いていますが・・・


ちなみに、TIBの後にくるのがSTと呼ばれるシステムテストです。

当然ながら、開発を行っている会社によって呼び方が違うので、必ずしも規則等で決まっている
訳ではありませんが(笑)

新システムが正しく動作する事を祈っています。

Q戻り値の意味がわかりません…

戻り値とはどういう値なのか簡単な例文で教えて頂けますか?

Aベストアンサー

バカくさいかもしれませんが簡単な例えをだしてみます。
2人の子供がいて、名前をそれぞれ太郎・花子にしましょう。この2人の子にある役割を決めます。
・花子は飴をもらうと、それをチョコにする役割。(できるかは別として)
・太郎は花子を呼んで飴をあげる役割。

さてこの例では太郎の飴が引数(ひきすう)になり
花子のチョコが戻り値になります。

このイメージを元に次の文を読んでみてください。

「プログラム中の関数やサブルーチンが処理を終了し
呼び出し元に処理の結果として返す値。」

これが戻り値の正しい定義です。
そのほかにはNo1さんのような役割指すときも、それを「戻り値」と呼んだりします。

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。

Qエクセルで勝手に「折り返して全体表示」をされてしまいます!

エクセルの書式→セルで、「折り返して全体を表示する」を設定していないのにも関わらず、セル内の文章をコピーすると、その後勝手に折り返し表示になってしまいます。
セル行の高さを全て揃えたいので、あえて折り返さないようにしているのに、勝手に折り返してしまうのでイライラします!
何があっても常に折り返さない設定はできないのでしょうか?
教えて下さい。 宜しくお願いします。

Aベストアンサー

コピーの対象となっている「セル内の文章」は“セル内で改行”
されていませんか?
私も同じ現象が発生しました。(Excel2003)
セル内の文章をコピーし、コピー先のセル内を編集選択(F2)
した直後に、「折り返して全体を表示」状態になりました。
そこで、同じセルの文章を“セル内で改行していない”状態で
同じ操作をすると現象は発生しませんでした。

Excelの仕様等を確認したわけではありませんが、aisha921さん
も、ぜひご確認してみてください。

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング