1 / 16

本日の課題

本日の課題. ソフトウェア開発の手順を簡単に解説します。 この授業で開発するソフトウェアは「住所録」です。開発手順を考えましょう。 「住所録」のデータ構造を決定し,データ入力部を作りましょう。. ソフトウェア開発手順. 企画立案 要求仕様書の作成 目的,要求の定義と分析 システム設計 プログラムの機能分割,接続方法 プログラム設計仕様書の作成 各関数の構造設計,データ構造の設計 コーディング テストとデバッグ 保守・運用. 「住所録」ソフトの開発. 要求仕様 目的:住所や電話番号の管理 要求:データの入力・保存・追加・削除・訂正・検索 システム設計

morela
Download Presentation

本日の課題

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 本日の課題 • ソフトウェア開発の手順を簡単に解説します。 • この授業で開発するソフトウェアは「住所録」です。開発手順を考えましょう。 • 「住所録」のデータ構造を決定し,データ入力部を作りましょう。

  2. ソフトウェア開発手順 • 企画立案 • 要求仕様書の作成 • 目的,要求の定義と分析 • システム設計 • プログラムの機能分割,接続方法 • プログラム設計仕様書の作成 • 各関数の構造設計,データ構造の設計 • コーディング • テストとデバッグ • 保守・運用

  3. 「住所録」ソフトの開発 • 要求仕様 • 目的:住所や電話番号の管理 • 要求:データの入力・保存・追加・削除・訂正・検索 • システム設計 • 機能分割:データ入力,データ追加,データ削除,データ保存,データ読み込み,整列,検索 • 接続法:各機能(関数)へデータのアドレスを渡す • 以後,各機能について,プログラム設計仕様を考えながら実現していきます。

  4. データ入力部の実現 • どのように入力するか? • キーボードからの入力 • ファイルからの入力 • 他のソフトウェアからのインポート • データ構造はどうするか? • 何人分ものデータを扱う=「配列」 • 一人のデータにいくつもの小項目がある=「構造体」

  5. 構造体の考え方 • intやcharなどの基本データ型を好きなように組み合わせて,新しいデータ型として扱います。 • 1つの名前だけで,関連したいくつもの変数を一度に扱うことが出来ます。 • 密接な関係を持ついくつかの変数を,1つの構造体名の元に組織化する働きです。

  6. char name[100][20];int eigo[100];int suugaku[100]; 例えば… • 学生の名前と,英語と数学の点数を100人分管理することを考えましょう。どのように管理しますか?

  7. strcpy(name[0], name[38]);eigo[0] = eigo[38];suugaku[0] = suugaku[38]; それでは… • 出席番号38番の学生のデータを,作業領域である,配列0番の要素にコピーするとしたら,どのような作業になりますか? 3行書く必要がある。間違う可能性が高くなる。

  8. gakusei[0] = gakusei[38]; 構造体を利用すれば • 構造体変数gakusei[100]が宣言されているとすれば… • たったこれだけで,名前も英語の点数も数学の点数も同時にコピーが完了します!

  9. struct student{ char name[20]; int eigo; int suugaku; }; タグ メンバ では,構造体はどのように定義するのでしょう? 「名前」「英語」「数学」という3つのデータを扱うための 構造体「student」を考えます。「student型」というデータ型を新しく作る,と思ってください。 注意:プリプロセスでの宣言になります。

  10. 新しいデータ型と考えよう struct student gakusei[100]; では,構造体変数gakusei[100]は,どのように宣言するのでしょう? gakusei[]は,それぞれの配列要素が,構造体宣言された複数のメンバ(name, eigo, suugaku)を持ちます。では,それぞれのメンバにアクセス(利用)するにはどうしたらよいでしょうか?

  11. gakusei[38].eigo メンバの参照 • 構造体宣言された変数,gakusei[38]のメンバeigoを参照するには,次のように「.」を用います。 • ただし,構造体変数がポインタ変数の場合は異なります。ポインタの項で説明します。

  12. 演習① • student型で変数を宣言し,その変数のメンバにキーボードから値を入力するプログラムを作成して下さい。 • ensyu1.cをダウンロードして,プログラムリストを追加,完成して下さい。

  13. 演習② • 構造体配列を宣言し,配列の一つの要素にメンバの値を入力し,他の要素に構造体コピーすることにより,メンバ全てがコピーされることを確認して下さい。 • ensyu2.cをダウンロードしてリストを追加して下さい。 • ensyu1.cの結果を利用しても良いです。

  14. では,住所録。 • 住所録データとして,メンバ変数には何を用意すればよいでしょうか? また,それはどのようなデータ型で宣言すればよいでしょうか? • 演習のプログラムを参考にして,住所録データを入力して,確認のために画面に出力するプログラムを作りましょう。 • address.cをダウンロードして,リストを追加してください。

  15. 注意点 • 郵便番号や電話番号は数字です。小数ではありませんが,整数型で良いでしょうか?また,ハイフン(-)はどう処理すれば良いでしょうか? 0で始まる場合は? • 「今,何件目の入力を行っているか?」が分かるようなメッセージが出力されれば,より分かりやすいプログラムとなります。そういった工夫も心がけましょう。

  16. 考えてみましょう • プログラム作成時には,何件の入力が行われるか不明ですから,通常,配列の要素数は余裕を持って宣言しておきます。 • さてそれでは,実際の入力の際,「入力が終了した。入力のループを終了したい」という処理は,どのように実現すれば良いでしょうか? • ヒント:無限ループを設定して,ある条件が満たされたときにループをbreakする,という考え方です。

More Related