no message

This commit is contained in:
a-kizaki
2026-10-06 12:10:09 +09:00
commit 9c2090ffa2
156 changed files with 14850 additions and 0 deletions

22
Question10-class/Ex01.php Normal file
View File

@@ -0,0 +1,22 @@
<?php
/**
* [Ex01 オブジェクト指向クラスの問題]
*
* TODO:
* 1. 新しく「User.php」というファイルを作成し、以下の仕様に基づいてUserクラスを定義してください。
* - クラス名: User
* - プロパティ:
* user_id : ユーザID(整数)
* user_name : ユーザ名(文字列)
* mail : メールアドレス(文字列)
* password : パスワード(文字列)
* - メソッド: なし
*
* 2. 本ファイル内で、require_onceを使ってUser.phpを読み込んでください。
*
* 3. 変数 $us を宣言し、Userクラスのインスタンスを作成して代入してください。
*
* 4. 最後に、$us の各プロパティの値を出力してください。
*
*/

16
Question10-class/Ex02.php Normal file
View File

@@ -0,0 +1,16 @@
<?php
/**
* [Ex02 オブジェクト指向 クラスのプロパティ操作]
*
* TODO:
* 1. 既に作成した User クラス(User.php)を利用します。
* 2. require_onceを使い、User.php を読み込んでください。
* 3. 変数 $us を宣言し、User クラスのインスタンスを生成して代入してください。
* 4. $us の user_id プロパティに 101 を代入してください。
* 5. $us の user_name プロパティに "リゾーム太郎" を代入してください。
* 6. $us の mail プロパティに "rhizome@hoge.com" を代入してください。
* 7. $us の password プロパティに "1qazxcv" を代入してください。
* 8. 最後に、$us の各プロパティ (user_id, user_name, mail, password) の値を出力してください。
*
*/

18
Question10-class/Ex03.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
/**
* [Ex03 オブジェクト指向 クラスの活用 - POSTによるUserクラスの利用]
*
* TODO:
* 1. 既に作成した User クラス(User.php)を利用します。
* 2. require_onceを使い、User.php を読み込んでください。
* 3. 前画面からPOSTで送信された以下のデータを、それぞれ変数に格納してください。
* - ユーザID(数字):キー "user_id"
* - ユーザ名:キー "user_name"
* - メールアドレス:キー "mail"
* - パスワード:キー "password"
* 4. 変数 $us を宣言し、User クラスのインスタンスを生成して代入してください。
* 5. 取得した各値を、$us の各プロパティ(user_id, user_name, mail, password)に代入してください。
* 6. 最後に、$us の各プロパティの値を出力してください。
*
*/

41
Question10-class/Ex04.php Normal file
View File

@@ -0,0 +1,41 @@
<?php
/**
* [Ex04 オブジェクト指向 クラスの活用 - Carクラスを用いた移動シミュレーション]
*
* TODO:
* 1. 新しく「Car.php」というファイルを作成し、以下の仕様に基づいて Car クラスを定義してください。
* - クラス名: Car
* - プロパティ:
* serialNo : シリアル番号(整数)
* color : 色(文字列)
* gasoline : ガソリン残量(整数)
* - メソッド:
* run() : 戻り値は整数、引数はなし。
* run() メソッドは以下の処理を行います。
* a. ガソリンが0の場合、進むことができないので -1 を返す。
* b. ガソリンを1消費する。
* c. 1~15のランダムな整数値を生成し、その値(進んだ距離)を返す。
*
* 2. 本ファイル内で、require_once を使い Car.php を読み込んでください。
* 3. 変数 $car を宣言し、Car クラスのインスタンスを生成して代入してください。
* 4. $car の各プロパティに以下の値を代入してください。
* - serialNo: 10000
* - color: "Red"
* - gasoline: 50
* 5. 目的地までの距離は300kmとします。
* 6. 以下の処理を実装してください。
* - 変数 $move を初期化し、これまで進んだ総距離とします。
* - 変数 $count を初期化し、run() メソッドを実行した回数(時間)をカウントします。
* - while ループを用いて、目的地まで進むまで以下を繰り返してください:
* a. $car の run() メソッドを呼び出し、戻り値を $ret に代入する。
* b. $ret が -1 なら、ループを終了する。
* c. $move に $ret を加算する。
* d. $count を1増やす。
* e. 現在の進行状況を「n時間でm km進みました。残り:x km」と表示する。
* ※ n: 実行回数、m: 今回の進んだ距離、x: 残り距離(残りが負の場合は0と表示)
* - ループ終了後、もし目的地に到達していなければ「目的地に到達できませんでした」と出力し、
* 目的地に到達していれば「目的地までn時間かかりました。残りのガソリンは、xリットルです」と出力してください。
* ※ x は $car->gasoline の残りの値
*
*/

27
Question10-class/Ex05.php Normal file
View File

@@ -0,0 +1,27 @@
<?php
/**
* [Ex05 オブジェクト指向 - Carクラスを用いた競争シミュレーション]
*
*
* TODO:
* 1. 既に作成済みの Car クラス(Car.php)を利用します。
* 2. require_once を使い、Car.php を読み込んでください。
* 3. POSTで送信されたデータから、3台の車の情報を取得してください。各車について、以下のキーの値を取得します:
* - シリアル番号: "serialNo1", "serialNo2", "serialNo3"
* - 色: "color1", "color2", "color3"
* - ガソリン: "gasoline1", "gasoline2", "gasoline3"
* 4. それぞれの車のインスタンスを生成し、取得した値を対応するプロパティに代入してください。
* 5. 目的地までの距離は200kmとします。各車について、以下のシミュレーションを行ってください:
* - 変数 $move を初期化し、これまでの走行距離を管理します。
* - 変数 $hours を初期化し、run() メソッドを実行した回数(=経過時間)をカウントします。
* - while ループを使い、目的地まで進むまで run() を呼び出してください。
* ・run() の戻り値が -1 の場合は、その車は走行不能とし、$hours を -1 としてください。
* ・それ以外の場合は、戻り値分を $move に加算し、$hours を1増やしてください。
* - 各run() の実行結果として、【n台目】 m 時間で x km進みました。残り y km と表示してください
* (ただし、残り距離が負の場合は0と表示)。
* 6. 各車のシミュレーション終了後、各車の走行時間(-1の場合は到達不可)をもとに順位付けを行い、以下のように出力してください:
* - 目的地に到達した車については「○台目の車が掛かった時間: n 時間」
* - 到達できなかった車については「○台目は目的地に到達できませんでした」
*
*/

153
Question10-class/index.html Normal file
View File

@@ -0,0 +1,153 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PTra10スタートページ</title>
<!-- Bootstrap Core CSS -->
<link href="../common/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="page-header">
<h1>
独習PHP第10章練習問題 <small>インスタンスとクラスの定義</small>
</h1>
</div>
<div class="panel-group" id="accordion">
<!-- Ex01 -->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a href="Ex01.php" target="_blank">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Ex01: オブジェクト指向 - Userクラスの作成
</a>
<small>初級</small>
</h4>
</div>
</div>
<!-- Ex02 -->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a href="Ex02.php" target="_blank">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Ex02: オブジェクト指向 - Userクラスのプロパティ操作
</a>
<small>初級</small>
</h4>
</div>
</div>
<!-- Ex03 -->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseEx03">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Ex03: オブジェクト指向 - POSTによるUserクラスの利用
</a>
<small>初級</small>
</h4>
</div>
<div id="collapseEx03" class="panel-collapse collapse">
<div class="panel-body">
<form method="post" action="Ex03.php" target="_blank" class="form-inline">
<div class="form-group">
<label for="user_id">ユーザID</label>
<input type="number" class="form-control" name="user_id" placeholder="ユーザIDを入力してください">
<label for="user_name">ユーザ名</label>
<input type="text" class="form-control" name="user_name" placeholder="ユーザ名を入力してください">
<label for="mail">メールアドレス</label>
<input type="text" class="form-control" name="mail" placeholder="メールアドレスを入力してください">
<label for="password">パスワード</label>
<input type="text" class="form-control" name="password" placeholder="パスワードを入力してください">
</div>
<button type="submit" class="btn btn-primary">送信</button>
</form>
</div>
</div>
</div>
<!-- Ex04 -->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a href="Ex04.php" target="_blank">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Ex04: オブジェクト指向 - Carクラスを用いた移動シミュレーション
</a>
<small>上級</small>
</h4>
</div>
</div>
<!-- Ex05 -->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseEx05">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Ex05: オブジェクト指向 - Carクラスを用いた競争シミュレーション
</a>
<small>上級 ※複数の要素(クラス利用、アルゴリズム、配列操作など)を組み合わせる応用力を試す問題</small>
</h4>
</div>
<div id="collapseEx05" class="panel-collapse collapse">
<div class="panel-body">
<form method="post" action="Ex05.php" target="_blank" class="form-inline">
<!-- 1台目の車情報 -->
<div class="form-group">
<label for="serialNo1">1台目 シリアル番号</label>
<input type="number" class="form-control" name="serialNo1" placeholder="シリアル番号を入力">
<label for="color1">色</label>
<input type="text" class="form-control" name="color1" placeholder="色を入力">
<label for="gasoline1">ガソリン</label>
<input type="number" class="form-control" name="gasoline1" placeholder="ガソリン量を入力">
</div>
<br>
<!-- 2台目の車情報 -->
<div class="form-group">
<label for="serialNo2">2台目 シリアル番号</label>
<input type="number" class="form-control" name="serialNo2" placeholder="シリアル番号を入力">
<label for="color2">色</label>
<input type="text" class="form-control" name="color2" placeholder="色を入力">
<label for="gasoline2">ガソリン</label>
<input type="number" class="form-control" name="gasoline2" placeholder="ガソリン量を入力">
</div>
<br>
<!-- 3台目の車情報 -->
<div class="form-group">
<label for="serialNo3">3台目 シリアル番号</label>
<input type="number" class="form-control" name="serialNo3" placeholder="シリアル番号を入力">
<label for="color3">色</label>
<input type="text" class="form-control" name="color3" placeholder="色を入力">
<label for="gasoline3">ガソリン</label>
<input type="number" class="form-control" name="gasoline3" placeholder="ガソリン量を入力">
</div>
<br>
<button type="submit" class="btn btn-primary">Ex05 競争シミュレーション実行</button>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- jQuery -->
<script src="../common/js/jquery-3.2.1.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="../common/js/bootstrap.min"></script>
</body>
</html>