Stay Positive プログラミング奮闘記

誰かしらに何気ない気づきを!

高校生(1年) PHP  電卓 ソースコード

現在高校1年生です。

今日記事を書くことは、PHPソースコードをかいたので、それを皆さんにも見てほしいと思って書きました。

 

苦労した点、頑張った点など、高校生目線でかいていきたいです。

 

高校生中学生でプログラミングを始めたい人必見です。

とりあえず、ソースコードをのせます。

PHPApacheを開かないとブラウザで自分の書いたソースコードの実行結果が表示されないので、まずApacheを開くところから始めます。

今回は実行のボタンを押すと、違うページに飛んでいくシステムにしました。

 

あくまで、高校1年生が作ったソースコードだと思って参考にしてみてください。

 

post1.php

<html>
<head>
<title>
ポストデータ
</title>
</head>
<body>
<form method="POST" action="post2.php">
人数:
<input type="number" name="name" size="50"/>
<input type="submit" value="人数"/>
</form>
</body>
</html>

 

POST変数でほかのページに飛ばしてます。

action=のあとは違うページに飛ぶファイルの名前です。

この場合はpost2.phpですね。

また、value=の跡はボタンに表示させる文字を打ってます。

 

 

post2.php

 

<html>
<head>
<title>ポストデータ</title>
</head>
<body>
計算した人数は、<?php print $_POST['name']; ?>人
</body>
</html>

<?php
$rank =$_POST['name'];
print "計算する速度を計算する";
print "何回計算するか? 16個の数字を計算";
print "<br>";
if($rank ==1){
print $rank/1;
}elseif ($rank ==2 ){
print $rank/1+$rank/2;
}elseif ($rank ==4) {
print $rank/1+$rank/2+$rank/4;
}elseif ($rank ==8) {
print $rank/1+$rank/2+$rank/4+$rank/8;
}elseif ($rank == 16) {
print $rank/1+$rank/2+$rank/4+$rank/8+$rank/16;
}
print "<br>";
print "回計算する";
print "速度向上率は";
print "<br>";
if($rank ==1){
print $rank/1;
}elseif($rank ==2){
print ($rank/1+$rank/2)/2;
}elseif($rank ==4) {
print ($rank/1+$rank/2+$rank/4)/3;
}elseif ($rank ==8) {
print( $rank/1+$rank/2+$rank/4+$rank/8)/4;
}elseif($rank ==16){
print ($rank/1+$rank/2+$rank/4+$rank/8+$rank/16)/5;
}
print "<br>";

 

 

/* print define_syslog_variables();
openlog('$rank', '2', LOG_PID | LOG_PERROR, LOG_LOCAL0);
syslog(LOG_INFO, 'message');
closelog();
*/

//define($base,'name' );
//log2($base);

/*function getLog ($base){
return log2($base);
}
$name = 'getLog';
$Area=$rank;
print getLog;
*/
//p.192 check

print "<br>";

print "何枚計算しても使えるようにしたい";
print "そうすると並列化数を求める";
print "<br>";
print log ($rank,2);
// print"乗すると"+$rank+"になる";

print "<br>";

print log ($rank,2)+1 ;
$number = log ($rank,2)+1;

print "<br>";

//$numberの説明

?>

今回は計算速度を求める電卓を作ったので、見慣れない変数なども使っていますが、、、

if else ifで分岐構造を使ってます。

これは私が勉強しているJava8にも同じ構造がありますが、ちょっとprint(表示させるところ)がちがいますね。

Java8はSystem.out.print.ln();みたいな感じになりますが、PHPだとprintのみですね。

レンジのところは本当は推奨されない形なのですが、わからなかったので、そのまま変数をぶち込んだという感じです。

 

また、log関数を使ってます。電卓っぽくなくなりましたが、、、

/* ~*/のあたりはこの部分は読み取らないということです。

個々の部分は失敗作のものなんですが、何が失敗なのかがわからないので、※で残しているという感じです。

 

実行結果

http://localhost/PhpProject5/post1.php

Google Chomeとかがおススメです。

さっそく実行結果を開いてみます。

人数:  

 

post1.phpで作った箱です。

こんな感じに数字を自分で挿入できるんです。

人数:  

を今回代入しました。

そうすると、post2.phpにサイトが飛びます。そして、

post2.php

計算した人数は、8人 計算する速度を計算する何回計算するか? 16個の数字を計算
15
回計算する速度向上率は
3.75

何枚計算しても使えるようにしたいそうすると並列化数を求める
3
4

http://localhost/PhpProject5/post2.php

が実行されます。

この内容については、スーパーコンピューターの仕組みを計算しています。

興味のある人は調べてみてはいかがですか?

 

並列リダクションについてプログラミングしてみました。

 

並列リダクションとは、例えば、

今回では、8人が16枚のカードを計算していく速さを計算しています。

そして、それを1人でやるよりどれだけ早いかを効率を計算します。

 

並列リダクションの場合一枚ずつしか足せません。

一気に16枚縦に並べて筆算するということはできません。

 

そうして、1人でやった場合と2人でやった場合と4人でやった場合と8人でやった場合とに分岐しています。

 

そんな感じで、効率の割合が出てきます。

それをPHPで表しています。

 

 

こんな感じですが、PHPを頑張っています。

アドバイスや少しでも興味を持った方は、Twitterもやっています。

@kobayashinitya

にツイートしてみてください。