第4天 PHP分支、循環(huán)結(jié)構(gòu)

6. 流程控制

流程控制,就是研究程序的走向。

6.1. 流程控制概述

6.1.1. 三大流程結(jié)構(gòu):

順序結(jié)構(gòu):
程序運(yùn)行的自然狀態(tài),就是從前往后(從上到下)運(yùn)行程序。
分支結(jié)構(gòu):
程序運(yùn)行過(guò)程中,根據(jù)判斷條件的不同結(jié)果(true或false),執(zhí)行不同的分支(其他分支不再執(zhí)行)。
循環(huán)結(jié)構(gòu):
程序運(yùn)行過(guò)程中,根據(jù)判斷條件的不同結(jié)果(true或false),決定是再次執(zhí)行還是不再執(zhí)行。

6.1.2. 流程圖常用圖形符號(hào):

6.2. if語(yǔ)句

有如下幾種常見(jiàn)的if語(yǔ)句(不同的分支數(shù)量):

6.2.1. 形式1:?jiǎn)畏种?/strong>

形式:

if (  條件判斷 ){
//如果條件滿足,就執(zhí)行這里
}

流程圖:


image.png

6.2.2. 形式2:雙分支

形式:

if (  條件判斷 ){
//如果條件滿足,就執(zhí)行這里
}
else{
//如果條件不滿足,就執(zhí)行這里
}

流程圖:


image.png

image.png

6.2.3. 形式3:多分枝

形式:

if (  條件判斷1 ){
//分支1;
}
elseif(  條件判斷2 ){
//分支2;
}
elseif(  條件判斷3 ){
//分支3;
}
。。。。。。。前面的elseif分支,可以若干個(gè)(0個(gè)以上)
else{
//最后的else分支,可以沒(méi)有!
}

流程圖:


image.png
image.png

<u>綜合案例:</u>

在一個(gè)form表單中輸入一個(gè)分?jǐn)?shù)(0-100之間),程序可以給該分?jǐn)?shù)進(jìn)行“評(píng)語(yǔ)”,評(píng)語(yǔ)包括:

優(yōu)秀,良好,中等,及格,不及格。

6.3. 分支結(jié)構(gòu)之switch分支語(yǔ)句(重點(diǎn))

語(yǔ)法:

switch( 一個(gè)變量數(shù)據(jù)或表達(dá)式結(jié)果$v1 ){
case  值1:  //如果$v1 等于 這個(gè)“值1”,就執(zhí)行本分支
分支語(yǔ)句1;
break;  //表示跳出該分支,也就是跳出switch語(yǔ)句。
case  值2:  //如果$v1 等于 這個(gè)“值2”,就執(zhí)行本分支
分支語(yǔ)句2;
break;
。。。。。。  //可以更多的分支
default:
默認(rèn)分支;  //前面都不滿足的時(shí)候,就執(zhí)行這里
}

說(shuō)明:
1,上述“值1,值2,。。。”可以是各種標(biāo)量類(lèi)型,也可以是表達(dá)式——因?yàn)樽罱K它也是一個(gè)值。
2,用于進(jìn)行測(cè)試的數(shù)據(jù)變量$v1跟后續(xù)的各個(gè)值,只能進(jìn)行“相等比較”(==)。
3,從上述第2條角度來(lái)說(shuō),其實(shí)際上不如if靈活。
注意:
當(dāng)某個(gè)分支滿足條件并執(zhí)行該分支后,如果該分支中沒(méi)有break語(yǔ)句,此時(shí),程序的流程會(huì)“直接進(jìn)入”后一個(gè)分支繼續(xù)執(zhí)行,直到碰到break才會(huì)結(jié)束switch。
流程圖:

image.png

<u>示例:</u>
image.png

無(wú)break終止時(shí):
image.png

案例1:
使用switch實(shí)現(xiàn)
把成績(jī)進(jìn)行分檔:60分以下:不及格;60-69:及格; 70-79:中等;80-89:良好;90-99:優(yōu)秀;100:滿分

案例2:
輸入任意的年份和月份,輸出該月的天數(shù),例如:輸入year:2019 month:7,輸出該月的天數(shù)是31天
思路:天數(shù)是根據(jù)月份來(lái)決定,正常的是:1,3,5,7,8,10,12都是31天,4,6,9,11都是30天,唯一不同的是:
2月,如果是閏年是29天,非閏年則為28天。

<?php
  /*
    輸入任意的年份和月份,輸出該月的天數(shù),例如:輸入year:2019  month:7,輸出該月的天數(shù)是31天
  思路:天數(shù)是根據(jù)月份來(lái)決定,正常的是:1,3,5,7,8,10,12都是31天,4,6,9,11都是30天,唯一不同的是:
        2月,如果是閏年是29天,非閏年則為28天。
   */
   $year=2000;
   $month=2;
   switch ($month) {
     case 1:
     case 3:
     case 5:
     case 7:
     case 8:
     case 10:
     case 12:
     echo "31天";
     break;
    case 4:
    case 6:
    case 9:
    case 11:
        echo "30天";
        break;
    case 2:
        if($year%4==0&&$year%100!=0 || $year%400==0){
          echo "29天";
        }else{
          echo "28天";
        }
        break;        
     default:
     echo "非法的月份";
     break;
   }

6.4. 循環(huán)結(jié)構(gòu)之while循環(huán)語(yǔ)句

循環(huán)的含義:就是通過(guò)某種語(yǔ)法結(jié)構(gòu),對(duì)某段代碼可以“反復(fù)執(zhí)行”。

while循環(huán)語(yǔ)法:
    **初始化數(shù)據(jù)**
while(條件判斷){
。。。。循環(huán)體語(yǔ)句;
循環(huán)控制;
}

說(shuō)明:
循環(huán)一開(kāi)始就進(jìn)行條件判斷:
如果成立:則執(zhí)行循環(huán)體,而后會(huì)自動(dòng)回到循環(huán)開(kāi)始位置繼續(xù)進(jìn)行條件判斷,如此反復(fù);
如果不成立:則退出循環(huán),執(zhí)行后續(xù)語(yǔ)句。
流程圖:

image.png

<u>案例1:</u>
1)輸出1-10;

image.png

2)求1-10的和;
image.png

<u>案例2:</u>
求7到17的和。
image.png

<u>案例3:</u>
1、輸出1-100之間既能被3整除,也能被6整除的數(shù)
image.png

2、一張紙的厚度是2mm,問(wèn):折疊多少次后能夠達(dá)到珠峰的高度(8848米)
image.png

6.5. 循環(huán)結(jié)構(gòu)之do while循環(huán)語(yǔ)句

**do while循環(huán)語(yǔ)法:**
**   初始化數(shù)據(jù)**
do {
。。。。循環(huán)體語(yǔ)句;
循環(huán)控制;
}while(條件判斷);

說(shuō)明:
先執(zhí)行一次循環(huán)體,然后進(jìn)行條件判斷:
如果成立:則繼續(xù)回去執(zhí)行循環(huán)體,而后再次進(jìn)行條件判斷,如此反復(fù);
如果不成立:則退出循環(huán),執(zhí)行后續(xù)語(yǔ)句。
流程圖:

image.png

image.png

<u>案例:</u>
求7到177之間能被7整除的數(shù)的和。
image.png

6.6. 循環(huán)結(jié)構(gòu)之for循環(huán)語(yǔ)句(重點(diǎn)/難點(diǎn))

for循環(huán)語(yǔ)法:

for(循環(huán)變量初始化1; 循環(huán)條件判斷2; 循環(huán)變量的改變3){
。。。。。。。。循環(huán)體語(yǔ)句塊4;
//這里可以有多條語(yǔ)句
//是可以反復(fù)執(zhí)行的部分
}

說(shuō)明:
1,執(zhí)行流程如下圖所示

image.png

2,此語(yǔ)句結(jié)構(gòu)是將循環(huán)的3個(gè)要素都集中在一起寫(xiě)的形式,比較緊湊,容易控制,最常用。
3,循環(huán)變量初始化語(yǔ)句1只執(zhí)行一次,所以真正的正常循環(huán),是在“2->4->3”之間進(jìn)行。
典型流程圖:
image.png

<u>案例1:</u>
求1-100之間能被7整除的數(shù)的和。
image.png

<u>案例</u>****<u>2:</u>
輸出1-100之間能被3整除但不能被5整除的偶數(shù)。
image.png

<u>案例3:</u>
輸出1-100之間的數(shù),并且要求:
能被3整除的使用“三”代替,能被5整除的使用“五”代替,能同時(shí)被兩者整除的用“三五”代替。
image.png

6.7. 循環(huán)的中斷

循環(huán)是按給定的條件,只要條件滿足就會(huì)繼續(xù)執(zhí)行循環(huán)體的一種語(yǔ)法形式。
但,我們也可以在循環(huán)過(guò)程中(循環(huán)體內(nèi)),人為將循環(huán)中斷。
有兩種中斷循環(huán)的方式:
continue中斷:
含義:中斷當(dāng)前正在進(jìn)行的循環(huán)體(即后續(xù)語(yǔ)句不再執(zhí)行),繼續(xù)下一次循環(huán)要執(zhí)行的語(yǔ)句。
語(yǔ)法形式:

continue  [$n];  //表示是要中斷第幾層的循環(huán),繼續(xù)該層循環(huán)的下一次。
//其中$n可以省略,如果省略,表示1,就是中斷當(dāng)前層的循環(huán)。

break中斷:
含義:停止(跳出)當(dāng)前正在進(jìn)行的循環(huán)(即完全終止循環(huán)),去執(zhí)行該循環(huán)之后的語(yǔ)句。
語(yǔ)法形式:

break  [$n];  //表示是要中斷幾層循環(huán)。
//其中$n可以省略,如果省略,表示1,就是中斷當(dāng)前循環(huán)
他們都適用于3種循環(huán)。

<u>案例演示:</u>
1、輸出1-10的數(shù),除了5不輸出,其他都輸出出來(lái)。

image.png

image.png

2、從1-10(含1和10)進(jìn)行循環(huán)并輸出該數(shù)字,并要求能被3整除就不輸出,能被9整除就終止循環(huán)。

最后再輸出循環(huán)變量的值。

image.png

while和for的區(qū)別:
1、能用for解決的,while基本能解決;
2、for一般用于知道循環(huán)次數(shù)的場(chǎng)景,while循環(huán)一般用于不知道循環(huán)次數(shù)的場(chǎng)景

6.8. 多重循環(huán)及案例

概念:
多重循環(huán)就是循環(huán)里面由出現(xiàn)循環(huán)的代碼。
其基本執(zhí)行流程,其實(shí)仍然是循環(huán)的基本邏輯,只是循環(huán)的時(shí)候要注意:外層循環(huán)執(zhí)行每一次,里層循環(huán)就會(huì)完整執(zhí)行循環(huán)的“所有次”(一個(gè)完整循環(huán)的過(guò)程)。
<u>案例</u>****<u>1:</u>

image.png

輸出如下形式的數(shù)字到頁(yè)面上:
1 2 3 4 5 6 7 8
2 2 3 4 5 6 7 8
3 2 3 4 5 6 7 8
4 2 3 4 5 6 7 8
image.png

1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
image.png
image.png

<u>案例</u>****<u>2:</u>

輸出如下表格:

1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24

方法一:


image.png

方法二:

1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24

image.png

<u>案例3:</u>

實(shí)現(xiàn)如下所示99乘法口訣表。


image.png

image.png

<u>案例4:</u>
有紅、白、黑三種球若干個(gè),其中紅、白球共25個(gè),白、黑球共31個(gè),紅、黑球共28個(gè),求這三種球各多少個(gè)?
課間案例:
公雞5元一只,母雞3元一只,小雞1元3只,100元買(mǎi)了100只雞,問(wèn)各多少?

image.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift 提供了類(lèi)似 C 語(yǔ)言的流程控制結(jié)構(gòu),包括可以多次執(zhí)行任務(wù)的for和while循環(huán),基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 780評(píng)論 1 1
  • Swift提供了多種控制流聲明。包括while循環(huán)來(lái)多次執(zhí)行一個(gè)任務(wù);if,guard和switch聲明來(lái)根據(jù)確定...
    BoomLee閱讀 2,072評(píng)論 0 3
  • 本章將會(huì)介紹 控制流For-In 循環(huán)While 循環(huán)If 條件語(yǔ)句Switch 語(yǔ)句控制轉(zhuǎn)移語(yǔ)句 continu...
    寒橋閱讀 816評(píng)論 0 0
  • [The Swift Programming Language 中文版]本頁(yè)包含內(nèi)容: Swift提供了多種流程控...
    風(fēng)林山火閱讀 685評(píng)論 0 0
  • 思考:平常針對(duì)業(yè)務(wù)需求編寫(xiě)的代碼通常以行為單位,那么代碼的執(zhí)行邏輯是什么樣子的呢? 引入:正常情況下,代碼就是按照...
    好像在哪見(jiàn)過(guò)你丶閱讀 731評(píng)論 0 0

友情鏈接更多精彩內(nèi)容