質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

5回答

2656閲覧

PHP 【プログラミング】ロジックや数値の作り方・扱い方の、基本や考え方について

hiro0208

総合スコア75

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/03/31 05:16

編集2017/03/31 05:29

現在phpで日付取得や処理について学習しているのですが、

今月の選択された曜日から日付を出す。という内容で

$day += ($num - 1) * 7;//曜日の数から日付求める

というところの

($num - 1) * 7

入力された第$num週から1を引いて7をかけ、
曜日の値に加算していくことで、当月の日付を出すという、

このような数字の作り方(鶴亀算みたいな?)に気づいたり、発想することがまだ苦手です。
早くこのようなものに慣れたいのですが、
これは基本的な算数を改めて学習していくことで
身につけていくものでしょうか?

それとも演繹的や帰納的に論理を考えていくことで発想していく必要があるものでしょうか?
自分の頭が固いなぁという実感があり、ロジックを考えるのが億劫にもなります。
やる気はあるんですが 笑

また調べていたら
事務処理の実務などで、エクセルのVBAを使うところでは基本的なことのようですね。
私は情報処理の学習は、基本情報くらいでしか学んでおりませんが、
今後、プログラムの基本を押さえて上手くなりたいです。

追記
数をこなしパターンを覚えていくことも大事ですが、
自分の頭でしっかり考えていくことも合わせて大事であると書きながら思いました。。。

php

1<!doctype html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>sample</title> 6</head> 7<body> 8<?php 9//第何日 10for ($i = 1; $i <= 5; $i++) { 11 $option_num .= '<option value="' . $i . '">' . $i . '</option>' . "\n"; 12} 13//曜日のプルダウン 14?> 15<form action="" method="post"> 16<select name="num"> 17<?php echo $option_num; ?> 18</select> 19<select name="week"> 20<option value="0"></option> 21<option value="1"></option> 22<option value="2"></option> 23<option value="3"></option> 24<option value="4"></option> 25<option value="5"></option> 26<option value="6"></option> 27</select>曜日 28<input type="submit" name="btn" value="送信"> 29</form> 30<?php 31$year = date('Y'); //年 32$month = date('n'); //月 33if (isset($_POST['btn'])) { 34 $num = $_POST['num']; 35 $select_week = $_POST['week']; 36 //1から7日までの日付を取得する 37 for ($i = 1; $i <= 7; $i++) { 38 $timestamp = mktime(0, 0, 0, $month, $i, $year);//第6引数は今年のため省略OK 39 $week = date('w', $timestamp); 40 if ($week == $select_week) { 41 $day = $i; 42 } 43 } 44 // 45 $day += ($num - 1) * 7;//曜日の数から日付求める 46 $last = date('t'); 47 if ($day <= $last ) { 48 echo $day . '日' . "\n"; 49 } 50 else { 51 echo '該当する日がありません。' . "\n"; 52 } 53} 54?> 55</body> 56</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

自分の質問を引用してしまいますが、

ループ処理内の分岐処理のアルゴリズムを組むのが苦手

この質問の回答の中でmunyaXさんがこんな回答をくださいました。

プログラムは書けば書くほど自分の中で「定石」が生まれてきます。

ということで、やっぱりソースコードを書いたり読んだりするのがいちばんの近道の様です。それこそ「定石」ができるくらいに。

自分も定石がそれほど多くない人間ですが、その向上心は素晴らしいと思います。
お互い頑張りましょう。

以上、拙い回答ですが参考になれば嬉しいです。

投稿2017/03/31 07:57

manzyun

総合スコア2244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro0208

2017/03/31 12:10

>プログラムは書けば書くほど自分の中で「定石」が生まれてきます。 囲碁や将棋みたいですね! >やっぱりソースコードを書いたり読んだりするのがいちばんの近道の様です。それこそ「定石」ができるくらいに。 素晴らしいですね!  >お互い頑張りましょう。 よろしくお願いいたします。
guest

0

少しPHPとは論点がずれているように思いますが

これは基本的な算数を改めて学習していくことで身につけていくものでしょうか?

これに対する回答として、私の経験で申し上げるなら必要ありません。

私は文系ですので、今でも数字が苦手です。
仕事上、統計学で歪度や尖度を出すなどをしなければならないのですが
文献読んでしっかり理解する時間が必要になってきます。

ただし、これは特異な分野になりますので、日常プログラミングでは必要ありません。

プログラミングに関して言えば、そのプログラミング言語がどのように理解して
どのように判断するからこのような結果になるとロジカル的に考えるように練習しています。

ですので、私が質問者さんのプログラミングソースを読んだとき何をしたかというと
1行ずつ目で見て上から読んでいき脳内で結果を出しています。
#これぐらいの行数ですと10秒あればできます。

これは経験(慣れ)と練習(努力)でカバーできます。
理系や文系の違いでスタート地点が違うかもしれませんが
努力すればいずれ逆転することができます。

最初は大変かもしれませんが、素晴らしいプログラマになれると思いますよ。

投稿2017/03/31 05:56

lazhuward

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro0208

2017/03/31 06:28

>ロジカル的に考えるように練習しています。 意識して身につけるようにしたいと思います。 >1行ずつ目で見て上から読んでいき脳内で結果を出しています。 これを面倒くさがるところがあるので、変えていきたいと思います。
guest

0

ベストアンサー

こういうのは論理的思考の積み重ねもあれば、いわゆる「神が下りてくる」ようにひらめくこともあるので、一概には言えないです。
一つ言えるとすれば、「何事も考える癖をつけよう」くらいですかね。

ちなみに PHP では 'first sunday of 2017-03' なんて書式が使えたりします。
※これで2017-03-05 が返ってきます

投稿2017/03/31 05:39

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro0208

2017/03/31 05:47 編集

<「神が下りてくる」笑 ありがとうございます! 何を作りたいのか、という目的を見失って手段に没頭していると、このようになるとも ふと思いました。
tacsheaven

2017/03/31 08:02

もうひとつ。没頭しすぎると視野狭窄に陥り、自明のことがすこーんと出てこなくなります。これに徹夜作業による思考力の低下が加わると、もう効率なんてありはしません。デバッグ作業で徹夜するのは、時間だけかかってまったく作業が進まないという、非常に悲惨なことになります(なのにそういう作業やるところ多いんですよねえ……) 実際、ファイルポインタの閉じ忘れという簡単なバグを、2日間徹夜して見つけられなかったことがあります。どうしようもなくなって2時間仮眠したら、1時間で発見から修正まで終わったという……早く直せと言ってくるのはいいけど、効率はどんどん落ちるんだから、きちんと休ませろ、っての。
hiro0208

2017/04/02 16:44 編集

>バグを、2日間徹夜して見つけられなかった バグと対峙する事について考えさせられました。 自分の論理がコンピュータに認識されず、その解決に再度自分(達)で挑む、これは過去の自分より賢くなっていないと解決しないわけですから大変なことですね。それも短期間で。そのためにも、この職種に学習は常に必要という事がよくわかります。そして、作るものが高度なものを目指せば、終わりはないものですね。 また、プレッシャーがある中で、頭をクリアにするために休憩を入れるということや、頭使う思考系の仕事のデバッグ作業を効率的するという事も、単純に時間が計算できない事であり、学習とは違う視点で取り組まないといけない事ですね。プログラマー業の全体像も少し知ることができ、心構えとして大変為になりました。ありがとうございます!
guest

0

特殊な技術系の計算でない限り、基本は算数の応用だと思うので、改めて勉強し直すとかではないでしょうね。
法則をいかに閃くかでしょうかね。
知能テスト的な面があるかもしれません。

あとは経験を積むことでプログラミング脳になっていくかと思います。
初めてプログラムを組む人は、数字を1つずつ増やしていくことも難しいらしいじゃないですか。
頭の中では1、2、3…、と単純に数えられることを、コードに起こすときには違う発想が必要です。
a = a + 1
自分自身に1を加算したのを自分に代入する。
質問者さまはまあこれくらいのことは大丈夫だと思いますが、複雑な処理になった場合にスルッと閃くかどうかは経験値次第かなと思います。

投稿2017/03/31 05:56

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro0208

2017/03/31 06:26

>法則をいかに閃くか 常に、閃めいていたいですね 笑 >あとは経験を積むことでプログラミング脳 ありがとうございます。
guest

0

いわゆるオンラインジャッジはロジックの勉強に向いていると思います。
言語の習得やアルゴリズムの学習に最適 オンラインジャッジサイト一覧(2016/12 版)

AOJ - オンライン プログラミング チャレンジは、簡単な問題からスタートできるのでお勧めです。

投稿2017/03/31 06:06

can110

総合スコア38256

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro0208

2017/03/31 06:30

>オンラインジャッジ 参加している方、向上心があってかっこいいですね! 見習いたいと思います。
can110

2017/03/31 07:32

参加するというよりも、ネット上に公開されている問題集を解いてみる、といった気楽な気持ちで始めてよいかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問