プログラミングに関しては全く無知です。どうぞよろしくお教え下さい。
(1)「一個140円の商品を客がn個購入し代金を一万円札で支払った時、おつりはイクラになるか」を求めるプログラミンを考えることとします。
これは、どういう形のプログラムで実際に表現されますか。教えて下さい。改行も実際通りお教え願えれば幸いです。
(2)・・・・この(2)のほうに、より強い興味を感じているのですが、
上記のプログラムは紙の上の存在、頭の中の存在ですが、実際にWindowsで実行しようとする時、具体的にはどういう作業の段階を踏みますか。・・・・この具体的な段階がいちばん知りたい部分です。
(1)で作成したプログラムは、何に書いて(ワードパッドですか、メモ帳ですか)、名前をつけたら、どこに保存するのでしょうか。ドライブCなのでしょうか。またプログラムを書いて保存するとき、ファイルの拡張子は一定ですか。
そして、保存したプログラムを実際に使うには、どういう手順になりますか。「すべてのプログラム」の中に表示されますか。どこを選択クリックしたら、「n」の入力を待つプロンプトが出て来ますか。
○
以上、まったくのシロウトの質問で大変失礼だったかも知れませんが、どうぞよろしくお教え下さい。お忙しいところ申しわあけありませんが、よろしく御願い申し上げます。
この方面に詳しい方にとっては、つまらない質問と思われるかも知れませんが、どうしても知りたいので質問を書かせていただきました。御了承下さい。
No.1
- 回答日時:
(1)に書かれたことは数式にはなりますが、その部分だけに注目してもプログラムにはなりません。
プログラム(ソフトウェア)にするにはプログラムの入力と出力を規定します。具体的にはコマンドラインで実行するプログラムなら「プログラム名だけを指定して実行すると計算結果(おつり額)が返される」のか「プログラム名の後ろに商品金額と入金額を指定して実行すると計算結果(おつり額)が返される」のかといったことです。
ウィンドウ・インタフェースのプログラムなら画面で何を入力し、どういう操作をするとどういう形で結果が表示されるかです。
上記のようなことをプログラムの機能仕様と言います。それが決まらないとプログラムを作ることは出来ません。
機能仕様が決まったら開発する言語の仕様をある程度考慮したプログラム内部の処理手順を設計します。日常使用している言語を使って箇条書きなどで書いてもよいですし、フローチャートなどのチャート図を交えてまとめてもよいです。入力値のエラーチェックや入出力などのエラーがあった場合の処理も具体的に示します。処理内容によっては処理が正常に進んだ場合の記述よりエラーがあった場合の記述の方が重要かつ記述量も多いことがあります。これを詳細仕様と言ったりします。
ここまで出来たらコーディングです。コンピュータ言語を使用してプログラムを記述します。コンパイル言語であればコンパイル&リンクをして実行ファイルが出来るところまでをコーディングとする場合が多いです。
この段階では代表的なデータを使った正常動作を確認する場合も多いです。
実行ファイルが出来たら試験です。試験は2段階から3段階で行うことが多いです。大きなシステムでは4段階以上の場合もあります。
一番低レベルの試験は詳細仕様とコーディング・イメージを意識した、つまり内部構造に従った全パス試験です。プログラムソースの全ての部分がきちんと動作することを確認します。
その全試験項目がOKとなったらプログラムを外部から見た機能試験です。ウィンドウ・インタフェースのプログラムであれば画面内の配置や見出し部分の文言やデザインが設計通りかの確認もします。また、内部の処理の都合を気にせず、人が行いそうな異常操作などについての確認も行います。
大きくはそんな感じです。
参考まで。
No.2
- 回答日時:
(1)について
これは単純な数式で表現することができます。プログラミングというよりは算数ですね。
C言語で表現するなら、数式を記述するだけです。
(2)について
プログラムを記述するときは、テキストエディタなどを使って行います。拡張子はC言語なら .c です。このファイルを保存したあと、記述したプログラムを実行可能な形式に変換するためにコンパイルします。実行可能形式(.exe)を生成したら、そのファイルを実行すると、記述したプログラムが実行されることになります。
コンパイルを実行するツールをコンパイラといいます。これらツールやエディタなど、一つのパッケージにしているのが統合開発環境というのですが、ウインドウズであればマイクロソフトのビジュアルスタジオがお手軽だと思います。無償版がダウンロードできるので試してみたら良いと思います。
No.3
- 回答日時:
言語指定されてないので、初心者に優しい、と言われるPython
Python:
http://www.python.jp
を使うと、(1)は具体的には
def foo(n, money = 10000, price = 140):
return money - price * n
ですね。
(2)はなかなか難しい。
基本的には、プログラミング言語と言うのは多かれ少なかれ、CLI(コマンドラインインターフェース)を前提に設計されています。
Windowsで言うと、実は
「DOS窓を使って実行されるモノを作る」
と言うのが基本大前提なんです。
GUIはそれに「何かを被せる」事を行ってて・・・結構プログラミング「らしい」トコが無い、つまり割りに定型文的な記述を強いる「つまらない作業が多い」部分が多いんですよね〜。
まあ、ちとこの辺は後回しにしておいて、まずは。
> (1)で作成したプログラムは、何に書いて(ワードパッドですか、メモ帳ですか)
ワードパッドでもメモ帳でも「書け」ますが、まあ、フツーはもっと専用のツールを使うでしょうねぇ。
上で紹介したPythonだと付属でIDLEと言うIDE(統合開発環境)が付いてきます。Pythonの初心者ユーザーだとそれを使う事が多いでしょう。
また、WindowsでMicrosoftが提供してる言語(Visual C++/C#、あるいはVisualBasic)だとVisual Studioと言うMicrosoftがこれまた提供するIDEを使うでしょうね。
Javaと言う言語だと
Eclipse:
http://mergedoc.osdn.jp
や
NetBeans:
https://ja.netbeans.org
が人気あるでしょうし。
あとは言語関係なく一般的には、最近だと、古典的なviと言うテキストエディタ
KaoriYa:
https://www.kaoriya.net/software/vim/
が人気が出ているようです(恐らくMac人気と共に、Macビルトインのテキストエディタだ、ってのも相まって人気が出てるのでしょう)。
あー、それと、Windowsで一般的に人気があるテキストエディタだとサクラエディタってのもありますね。
サクラエディタ:
http://sakura-editor.sourceforge.net/download.html
要するに
1. 使いたい言語処理系が提供してるIDEを使う
2. 使いたい言語処理系のユーザーコミュニティの中で人気があるIDEを使う
3. 自分の好みに合った汎用テキストエディタを使う
かまあ、この3つのケースの中のどれかになる、って事です。
> 名前をつけたら、どこに保存するのでしょうか。
まあ、極論、どこに保存しても構いません。
一般的には
「パスが通ってるトコならどこでも」
と言いますよね。
ここではパスの通し方は説明しませんが(Windowsのバージョンに依るし、ググれば簡単に見つかるでしょう)、Windowsの場合だとC:直下にprojectフォルダ(あるいはhomeフォルダ)を作ったりしてそこにパスを通して、そこを作業場にするケースが多いんじゃないかな?
ただ、これは自分でテキストエディタ選んで環境構築して・・・ってケースなんで、上の
「言語処理系が提供してるIDEを使う」
前提の場合、そのへんは全部IDEの方が面倒見てくれるんで、考えなくってイイです。
おとなしくIDEが作成したフォルダ内にサブフォルダでも作って凌ぎましょう。
> プログラムを書いて保存するとき、ファイルの拡張子は一定ですか。
「プログラムを書いて」保存する、って事ですから、ソースファイルの事でしょう。
これはプログラミング言語毎に違って、って慣習になっています(あくまで慣習です)。
例えば上で紹介したPythonは*.pyってのが拡張子です。
C言語なら*.c
C++言語なら*.cpp
Javaなら*.java
Rubyなら*.rb
Common Lispなら*.lisp
等ですね。
(注: *は「何でもいい」って事で、例えば*.pyはmy_program.pyとかhoge.pyと言うファイル名を指す)
実は「一定ですか?」ってのは答えるのが難しく、拡張子、ってのは基本的には
「OSが自動で何の種類のファイルか判別する為のタグ」
なんですが、「自動」じゃなくって「手動」だったら別に「ファイルの種類」なんてのは知ったこっちゃないんで、どー付けても構わない事になるわけですね。
ただ、「お約束」に則っておけば、色々と便利になるわけで、そーゆー意味でこれらは「慣習」なんです。
> 保存したプログラムを実際に使うには、どういう手順になりますか。
さて、ここが「後回しにされた」部分ですね。
うーむ。
まず、先にも説明しましたが、プログラミング言語でプログラムを書く、ってのは残念ながら、今でも
*CLI(DOS窓)で操作出来るプログラムを書く
ってのが「基本」なんです。残念ながら。
つまり、あくまで原則ですが、
「アイコンをクリックしてプログラムを起動して・・・」
ってスタイルで書く事は・・・出来ません、とは言いませんが(笑)、それやるのはややこしい、初心者がすぐは到達出来ない、あるいは出来たとしても「多くの紆余曲折を全て端折ったツールを被せられていて」、あんまプログラミング自体は面白くない、とかメンド臭い、とか色々まあ、あるわけです(笑)。
んで、
> 「すべてのプログラム」の中に表示されますか。
一応「されません」って答えておくべきですかねぇ。
Windowsの「すべてのプログラム」に表示、ってのはあれは原則人力で、OS側に教えてやらないと登録されないのです。
フツーに、例えばソフトウェアをインストールしてあそこに表示されるのは、「登録するように」とインストールされたソフトウェアが「指定」してるから、です。
実際、登録指定を忘れたソフトウェアだと登録されないですしね(笑)。
あるいは、もし完全に自動で登録されるのなら、コンピュータ・ウィルス類とか、もし感染されたら全部そこに表示される事になっちゃって(笑)、もっと世の中安全になります(笑)。
> どこを選択クリックしたら、「n」の入力を待つプロンプトが出て来ますか。
これがちょっと質問が錯綜してるトコなんですよねぇ・・・。
まず、先にも書いた通り、原則的にはGUIでのプログラムを書くのは「至難の業」です。
出来なくはないけど大変、あるいは「つまらない」ってのが本当です。
まあ、初心者だって事を鑑みると・・・。
ちょっとまずはCLIだ、って辺りから始めましょうか。
まあ、C言語でのプログラムって事も考えられますが、先に書いたPythonのプログラムの例で言うと、
1. まずはDOS窓を起動します。
効率的なコマンドプロンプトの起動、終了方法:
http://cmd-pro.com/sta_end.html
コマンドプロンプトの起動 - Windows8:
http://pc-karuma.net/command-prompt-windows8/
Widnows 10 コントロールパネル コマンドプロンプトの開き方基本操作の説明:
http://www.akakagemaru.info/port/windows10-other …
2. DOS窓上でPythonを起動します(python、とタイプしてEnter)。
# こんなカンジになる
➜ ~ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
3. ファイル名(先程のプログラムを例えばfoo.pyとして保存してるとする)をimportする
# こんなカンジになる
>>> import foo
>>>
4. ファイル名.関数名に引数を付けて呼び出し
# こんなカンジになる
>>> foo.foo(10) #ファイル名fooの関数fooを引数10を与えて呼び出せ、の意
8600
>>>
ちょっとメンド臭く見えますが、これが「正攻法」です。
問題は、
> 「n」の入力を待つプロンプトが出て来ますか。
との事なんですが「出てきません」ね。
何故か?
それは「n」の入力を待つプロンプトを出すようにプログラムしてないから、です(笑)。
これはCだろうとPythonだろうとそうですが、「n」の入力を待つプロンプトを出すようにプログラムしないと「出てこない」んです。
要するに質問の(1)の仕様だと、そこは含まれてませんよね。
No.4ベストアンサー
- 回答日時:
ちょっと長くなっちゃったんで続きを。
先にも書きましたが、C言語だろうとPythonだろうと、「書かれた通りに実行はします」が書かなかった部分については実行しません。
つまり質問者さんの(1)の質問に関して言うと、
> (1)「一個140円の商品を客がn個購入し代金を一万円札で支払った時、おつりはイクラになるか」を求めるプログラミング
と言うのは入出力に関しては「何も設定してなかった」って事ですね。
従って、この部分は
> 「n」の入力を待つプロンプトが出て来
るようには設定されていないので、当然「n」の入力を待つプロンプト、なんざ出てこないんです。
ここもプログラムしたい、ってのならその通りにプログラムを設計して書かないと絶対出てきません。
(実はC言語だと、この辺明快には解説されてない例が多い、って言うか構造的にどうしても「main関数」を設定して「入出力を切り離せない」カタチで書く事が多いんで、初心者的には物凄く曖昧になる部分です。結果printfを書きまくるハメになります。)
Python(2.7)だと「n」の入力を待つプロンプト含み、って事で改造するのなら、定型的にはfoo.pyを次のように改造します。
def foo(n, money = 10000, price = 140): # ここは前と同じ
return money - price * n
if __name__ == '__main__': # ここを追加する
print foo(input("「n」の入力を待つプロンプト> ")) # input関数を引数として関数fooに渡し、printで表示する
そうすると、
1. DOS窓を起動する
2. python foo.pyとコマンドを打つ
# こんなカンジ
➜ ~ python foo.py
「n」の入力を待つプロンプト>
3. 好きなnを入力する
# こんなカンジ
➜ ~ python foo.py
「n」の入力を待つプロンプト> 10
8600
➜ ~
とだいぶ簡略化されました。
んで、上に追加した入出力関連の部分をGUIのコードに置き換えれば単純には「クリックして起動して・・・」と言うようなGUIプログラムを作成出来ます。
まあ残念ながら、僕自身は今、Linux使ってるんで、ちょっとWindows向けに「ほら、こう書けば・・・」ってすぐにはお見せ出来ないんですが(笑)、要するにこの辺の「入出力関連」をうまい具合にGUI作成ツールを使って置き換えれば端末(DOS窓)経由じゃなくても起動出来るプログラムは理論的には書ける、って事ですね。
で、Microsoft提供のVisual C++/C#あるいはVisualBasicだとそのへん、Windowsで動かす際には問題がないGUIツール込みで提供されてるので、便利と言えば便利な環境になってるわけです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 windows11 update の「更新の再開」について初歩的な質問なのですが 1 2022/10/19 00:57
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- C言語・C++・C# Visual studio2022についての質問です。 現在プログラムを作っているのですが、添付した 1 2023/01/16 19:37
- Visual Basic(VBA) Vba UserFormを前面に出す方法を教えてください 1 2023/08/17 11:08
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
このプログラミング誰か教えて...
-
PICの逆アセンブル?について
-
サイクロイドの軌跡
-
初心者にEXCELのVBAを教えると...
-
Ryzen 3700(無印)はWin11に対応...
-
VBプログラムをEXCEL VBAに移植...
-
論理回路や全加算機の仕組み
-
オフラインの掲示板
-
サーバーサイドのプログラム言...
-
プログラム初心者でござる。PHP...
-
DLLってなに?
-
自動で施設の空きを通知するプ...
-
API、OCX、DLLって何でしょう?
-
VBS:コンピュータ名を取得し、...
-
プログラミング言語について御...
-
コンソールアプリでファイル選...
-
win版とmac版などがあるのはなぜ?
-
1年無職の彼氏 別れるべきですか?
-
iframe の代用で objectタグを...
-
今職業訓練のパソコン教室行っ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
VBプログラムをEXCEL VBAに移植...
-
UNIX環境でのCプログラム上でC...
-
このプログラミング誰か教えて...
-
C言語のHP-UXからLinuxへのポ...
-
Ryzen 3700(無印)はWin11に対応...
-
VB.net エラーメッセージを英文...
-
SNMPトラップ情報をC#.netで作...
-
プログラムとは理系ですか文系...
-
現在プログラミングの研修中な...
-
VBS:コンピュータ名を取得し、...
-
C言語でSMTPを使ったプログ...
-
C/C++でチャットソフトを作りた...
-
OSとCPUの関係について
-
DLLってなに?
-
自動で施設の空きを通知するプ...
-
PHP+MySQLで家計簿を作りたい
-
どんなプログラムを自作しまし...
-
コンソールアプリでファイル選...
-
If … then の中の条件式と型に...
おすすめ情報