版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
智能小車C語(yǔ)言程序控制第五章:制作模擬交通燈
交通燈中有一種“行人請(qǐng)求式過(guò)街信號(hào)燈”,即在路口燈柱上設(shè)置一個(gè)按鈕,可以一鍵控制路口綠燈,方便行人緊急通行,試用Arduino系統(tǒng)設(shè)計(jì)完成,通過(guò)一個(gè)按鍵控制LED的亮滅?【案例導(dǎo)入】【案例導(dǎo)入】:案例程序行業(yè)PPT模板/hangye/constintbuttonPin=2; //定義按鍵輸入引腳為2號(hào)引腳constintledPin=13; //定義LED輸入引腳為13號(hào)引腳//注:此處使用的LED是Arduino開(kāi)發(fā)板自帶的LEDintbuttonState=0; //定義按鍵狀態(tài)變量初始值為0//對(duì)Arduino開(kāi)發(fā)板或相關(guān)狀態(tài)進(jìn)行初始化voidsetup(){pinMode(ledPin,OUTPUT); //設(shè)置ledPin端口為輸出端口pinMode(buttonPin,INPUT); //設(shè)置buttonPin端口為輸入端口}//系統(tǒng)調(diào)用,無(wú)限循環(huán)voidloop(){buttonState=digitalRead(buttonPin); //讀取按鍵狀態(tài)(buttonState==HIGH)?digitalWrite(ledPin,HIGH):digitalWrite(ledPin,LOW);//檢查按鍵狀態(tài),如果為HIGH,則點(diǎn)亮LED,否則熄滅LED}5.1PARTONE運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式
運(yùn)算符是告訴編譯程序執(zhí)行特定算術(shù)或邏輯操作的符號(hào),即用來(lái)對(duì)數(shù)據(jù)進(jìn)行運(yùn)算的符號(hào)。
表達(dá)式是由變量、常量和運(yùn)算符組成的式子,它描述了一個(gè)具體的求值運(yùn)算過(guò)程。表達(dá)式求值按運(yùn)算符的優(yōu)先級(jí)和結(jié)合性所規(guī)定的順序進(jìn)行。C語(yǔ)言運(yùn)算符5.1.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.算術(shù)運(yùn)算符2.算術(shù)表達(dá)式
用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象連接起來(lái)的、符合C語(yǔ)言語(yǔ)法規(guī)則的式子,稱為算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。例如:3+4.5*a-b*4/3-
-a+b%c5.1.2賦值運(yùn)算符和賦值表達(dá)式1.基本賦值運(yùn)算符賦值運(yùn)算符“=”的作用是將賦值運(yùn)算符右邊的表達(dá)式的值賦給其左邊的變量。例如,b=88就是將常量88賦給變量b。賦值運(yùn)算符的左邊必須是變量,右邊可以是C語(yǔ)言中任意合法的表達(dá)式。由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為賦值表達(dá)式。其格式如下:<變量><賦值運(yùn)算符><表達(dá)式>5.1.2賦值運(yùn)算符和賦值表達(dá)式2.復(fù)合賦值運(yùn)算符
為了簡(jiǎn)化程序并提高編譯效率,C語(yǔ)言允許在賦值運(yùn)算符“=”之前加上其他運(yùn)算符,以構(gòu)成復(fù)合賦值運(yùn)算符,例如:x=x+5可以寫成x+=5。x=x*(y+1)可以寫成x*=y+1。
可以這樣理解,對(duì)于A+=B這樣的式子,相當(dāng)于將A+復(fù)制到“=”的右邊變成A=A+B。若B是一個(gè)表達(dá)式,則相當(dāng)于B的兩邊有一個(gè)括號(hào)。例如,x*=y+z等價(jià)于x=x*(y+z)。C語(yǔ)言中的復(fù)合算術(shù)賦值運(yùn)算符有:+=、-=、*=、/=、%=。練一練行業(yè)PPT模板/hangye/嘗試分析以下程序的運(yùn)行結(jié)果。#include<stdio.h>main(){inta=6,b=8,c=2,x;x=a;printf("x=%d\n",x);x+=a;printf("x=%d\n",x);x*=b+c;printf("x=%d\n",x);return0;}5.1.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式1.關(guān)系運(yùn)算符關(guān)系運(yùn)算是邏輯運(yùn)算的一種簡(jiǎn)單形式,主要用于比較。5.1.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式2.關(guān)系表達(dá)式
由關(guān)系運(yùn)算符和操作數(shù)組成的表達(dá)式稱為關(guān)系表達(dá)式,例如:a+b>cx>yz!=x15*y==20
關(guān)系表達(dá)式的值只有兩個(gè),即“真”和“假”。在C語(yǔ)言中“真”用1表示,“假”用0表示。當(dāng)關(guān)系式成立時(shí)其值為“真”,否則為“假”。練一練行業(yè)PPT模板/hangye/嘗試分析以下程序的運(yùn)行結(jié)果。#include<stdio.h>main(){intx=20;inty=40;printf("%d\n",x<y); printf("%d\n",x>y); return0;}5.1.4邏輯運(yùn)算符和邏輯表達(dá)式
邏輯運(yùn)算就是將關(guān)系表達(dá)式或邏輯量用邏輯運(yùn)算符連接起來(lái),并對(duì)其求值的一個(gè)運(yùn)算過(guò)程。
1.邏輯運(yùn)算符為了表示復(fù)雜的條件,需要將若干個(gè)關(guān)系表達(dá)式連接起來(lái),C語(yǔ)言提供的邏輯運(yùn)算符就是實(shí)現(xiàn)這一目的的,邏輯運(yùn)算符有:&& 邏輯與|| 邏輯或! 邏輯非設(shè)A和B為參加運(yùn)算的邏輯量,則以上運(yùn)算符的含義見(jiàn)下表2.邏輯表達(dá)式
邏輯表達(dá)式是用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)的有意義的式子。邏輯表達(dá)式的值也只有兩個(gè),即“真”和“假”,其表示方法同關(guān)系表達(dá)式,用1表示“真”,用0表示“假”。
可以將邏輯表達(dá)式的結(jié)果賦給一個(gè)整型或字符型變量,如當(dāng)x=10,y=15時(shí),下面的語(yǔ)句是正確的。z=(x!=y)&&(y==15); /*z的值為1*/a=(x==y)||(x==15); /*a的值為0*/
5.1.5條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符需要有三個(gè)操作對(duì)象,稱為三目運(yùn)算符,它是C語(yǔ)言中唯一的一個(gè)三目運(yùn)算符。它可以替代部分選擇流程控制語(yǔ)句。條件運(yùn)算符構(gòu)成的表達(dá)式稱為條件表達(dá)式,又稱問(wèn)號(hào)表達(dá)式。條件表達(dá)式的一般形式如下:表達(dá)式1?表達(dá)式2:表達(dá)式3條件表達(dá)式的執(zhí)行行業(yè)PPT模板/hangye/
條件表達(dá)式的執(zhí)行過(guò)程:
當(dāng)表達(dá)式1的值為“真”(非0)時(shí),條件表達(dá)式取表達(dá)式2的值,否則取表達(dá)式3的值。具體執(zhí)行過(guò)程如下圖所示。條件運(yùn)算符的優(yōu)先級(jí)行業(yè)PPT模板/hangye/小貼士條件運(yùn)算符的優(yōu)先級(jí)比賦值運(yùn)算符高,比關(guān)系運(yùn)算符和算術(shù)運(yùn)算符低。例如:min=(a<b)?a:b中的括號(hào)可以不要,寫成min=a<b?a:b;而min=a<b?a:b*2相當(dāng)于min=a<b?a:(b*2),而不是min=(a<b?a:b)*2。【例5-1-1】輸入一個(gè)字符,判別是否為小寫字母,如果是,則將其轉(zhuǎn)換為大寫字母;如果不是,就不轉(zhuǎn)換。輸出最后得到的字母。行業(yè)PPT模板/hangye/#include<stdio.h>intmain(){charch;printf("\nPleaseinputacharacter:");scanf("%c",&ch);ch=(ch>='a'&&ch<='z')?(ch-32):ch; printf("%c\n",ch);return0;}程序運(yùn)行結(jié)果如圖所示:【例5-1-2】使用條件表達(dá)式實(shí)現(xiàn)求三個(gè)整數(shù)中的最大值。行業(yè)PPT模板/hangye/#include<stdio.h>intmain(){intmax=0;intone=66;inttwo=77;intthree=88;max=one>two?one:two; max=max>three?max:three; printf("三個(gè)整數(shù)中最大的值為%d\n",max);return0;}程序運(yùn)行結(jié)果如圖所示:5.1.6逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式在C語(yǔ)言中,逗號(hào)既可以作為分隔符使用,又是一種運(yùn)算符,用逗號(hào)將若干個(gè)表達(dá)式分開(kāi)便構(gòu)成了逗號(hào)表達(dá)式。其一般形式如下:表達(dá)式1,表達(dá)式,…,表達(dá)式n逗號(hào)表達(dá)式的運(yùn)算次序如下:先計(jì)算表達(dá)式1的值,再計(jì)算表達(dá)式2的值,最后計(jì)算表達(dá)式n的值。逗號(hào)表達(dá)式的值為表達(dá)式n的值。例如:13,17,19,23-11是一個(gè)逗號(hào)表達(dá)式,其值為23-11,即12。5.1.7sizeof運(yùn)算符
sizeof運(yùn)算符以字節(jié)形式給出其操作數(shù)在內(nèi)存中占用空間的大小。1.用于數(shù)據(jù)類型使用形式:sizeof(type)數(shù)據(jù)類型名必須用括號(hào)括起來(lái),如sizeof(int)。2.用于變量使用形式:sizeof(var_name)5.1.8數(shù)據(jù)類型轉(zhuǎn)換
不同類型數(shù)據(jù)的存儲(chǔ)形式有所區(qū)別,如字符型數(shù)據(jù)在內(nèi)存中是以ASCII碼的形式存儲(chǔ)的,與整型數(shù)據(jù)的存儲(chǔ)形式類似。
除字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用之外,不同類型的數(shù)據(jù)在進(jìn)行混合運(yùn)算時(shí),往往需要進(jìn)行類型轉(zhuǎn)換。5.1.9運(yùn)算符的優(yōu)先級(jí)和結(jié)合性
C語(yǔ)言中的運(yùn)算符和數(shù)學(xué)運(yùn)算符類似,不僅具有不同的優(yōu)先級(jí),而且有相應(yīng)的結(jié)合性。
在C語(yǔ)言中,運(yùn)算符的優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低。在表達(dá)式中,優(yōu)先級(jí)較高的運(yùn)算符先于優(yōu)先級(jí)較低的運(yùn)算符進(jìn)行運(yùn)算。
C語(yǔ)言中運(yùn)算符的結(jié)合性分為兩種,即自左至右和自右至左。5.2PARTTWO語(yǔ)句
C程序的功能是通過(guò)執(zhí)行語(yǔ)句實(shí)現(xiàn)的。語(yǔ)句的作用是向計(jì)算機(jī)系統(tǒng)發(fā)出操作指令,要求其執(zhí)行相應(yīng)的操作。
一個(gè)C程序可以由若干個(gè)源程序文件組成,一個(gè)源程序文件可以由若干個(gè)函數(shù)和預(yù)處理命令及全局變量聲明部分組成。
一個(gè)函數(shù)由數(shù)據(jù)聲明部分和執(zhí)行語(yǔ)句組成。在C程序中,任何以分號(hào)結(jié)尾的表達(dá)式都是一條語(yǔ)句。語(yǔ)句是C程序的基本組成部分C語(yǔ)句的分類行業(yè)PPT模板/hangye/
(1)表達(dá)式語(yǔ)句。(2)控制語(yǔ)句。(3)復(fù)合語(yǔ)句。(4)空語(yǔ)句。(5)函數(shù)調(diào)用語(yǔ)句。1.表達(dá)式語(yǔ)句
表達(dá)式語(yǔ)句是由表達(dá)式加上分號(hào)組成的。其一般形式如下:表達(dá)式;
一個(gè)表達(dá)式的末尾加一個(gè)分號(hào)就構(gòu)成了一條語(yǔ)句。表達(dá)式語(yǔ)句的末尾必須有一個(gè)分號(hào)。2.控制語(yǔ)句
控制語(yǔ)句用于完成一定的控制功能??刂普Z(yǔ)句是用于控制程序的流程,以實(shí)現(xiàn)程序的各種結(jié)構(gòu)方式的語(yǔ)句。它由特定的語(yǔ)句定義符組成。C語(yǔ)言中的控制語(yǔ)句有以下幾種。(1)條件語(yǔ)句:if語(yǔ)句、switch語(yǔ)句。(2)循環(huán)語(yǔ)句:do-while語(yǔ)句、while語(yǔ)句、for語(yǔ)句。(3)轉(zhuǎn)向語(yǔ)句:break語(yǔ)句、goto語(yǔ)句、continue語(yǔ)句、return語(yǔ)句。3.復(fù)合語(yǔ)句
C程序中把多條語(yǔ)句用大括號(hào)括起來(lái)組成的一條語(yǔ)句稱為復(fù)合語(yǔ)句。在程序中應(yīng)把復(fù)合語(yǔ)句看成單條語(yǔ)句,而不是多條語(yǔ)句。
復(fù)合語(yǔ)句內(nèi)的各條語(yǔ)句都必須以分號(hào)結(jié)尾,而在大括號(hào)外不能再加分號(hào)。4.空語(yǔ)句
僅由分號(hào)組成的語(yǔ)句稱為空語(yǔ)句。空語(yǔ)句是什么也不執(zhí)行的語(yǔ)句。在程序中空語(yǔ)句可用作空循環(huán)體。例如:while(getchar()!='\n');上述語(yǔ)句的功能是,只要從鍵盤輸入的字符不是回車符就重新輸入。這里的循環(huán)體為空語(yǔ)句。5.函數(shù)調(diào)用語(yǔ)句
函數(shù)調(diào)用語(yǔ)句由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成。其一般形式如下:函數(shù)名(實(shí)際參數(shù)表);執(zhí)行函數(shù)調(diào)用語(yǔ)句就是調(diào)用函數(shù)體,并把實(shí)際參數(shù)賦予函數(shù)定義中的形式參數(shù),然后執(zhí)行被調(diào)用函數(shù)體中的語(yǔ)句,求取函數(shù)值。5.3PARTTWOC語(yǔ)言中的基本輸入/輸出函數(shù)
C語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供了兩個(gè)控制臺(tái)格式化輸入/輸出函數(shù):scanf()和printf()。這兩個(gè)函數(shù)可以在標(biāo)準(zhǔn)輸入/輸出設(shè)備上以各種不同的格式讀/寫數(shù)據(jù)。scanf()函數(shù)用來(lái)從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)上讀數(shù)據(jù),printf()函數(shù)用來(lái)向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)寫數(shù)據(jù)。數(shù)據(jù)輸入/輸出庫(kù)函數(shù)預(yù)處理命令“#include”行業(yè)PPT模板/hangye/
在使用C語(yǔ)言庫(kù)函數(shù)時(shí),要用預(yù)處理命令“#include”將有關(guān)頭文件包含到源文件中。
在使用標(biāo)準(zhǔn)輸入/輸出庫(kù)函數(shù)時(shí)需要用到“stdio.h”文件,因此源文件開(kāi)頭應(yīng)有以下預(yù)處理命令:#include<stdio.h>或#include"stdio.h"5.3.1printf()函數(shù)printf()函數(shù)是格式化輸出函數(shù),其功能是按照用戶指定的格式,把指定的數(shù)據(jù)輸出到屏幕上。printf()函數(shù)的格式如下:printf("格式控制字符串",輸出表項(xiàng));
【例5-3-1】整型數(shù)據(jù)的輸出。行業(yè)PPT模板/hangye/#include<stdio.h>intmain(){inta=11,b=22;intm=-1;longn=123456789;printf("%d%d\n",a,b); printf("a=%d,b=%d\n",a,b); printf("m:%d,%o,%x,%u\n",m,m,m,m); printf("n=%d\n",n);printf("n=%ld\n",n); return0;}程序運(yùn)行結(jié)果如圖所示:5.3.2scanf()函數(shù)scanf()函數(shù)是格式化輸入函數(shù),即按照格式控制字符串規(guī)定的格式,從鍵盤上把數(shù)據(jù)輸入指定的變量之中。scanf()函數(shù)的一般形式如下:
scanf("格式控制字符串",輸入項(xiàng)地址列表);
小貼士行業(yè)PPT模板/hangye/(1)在格式控制字符串中可以指定數(shù)據(jù)的寬度,但不能指定數(shù)據(jù)的精度。例如:float
a;scanf("%10f",&a);
//正確scanf("%10.2f",&a);
//錯(cuò)誤(2)輸入long型數(shù)據(jù)時(shí)必須使用%ld,輸入double型數(shù)據(jù)時(shí)必須使用%lf或%le。5.3.3putchar()函數(shù)putchar()函數(shù)是字符輸出函數(shù),其功能是在顯示器上輸出單個(gè)字符。其一般形式如下:putchar(字符變量);例如:putchar('A'); //輸出大寫字母Aputchar(x); //輸出字符變量x的值5.3.4getchar()函數(shù)getchar()函數(shù)的功能是從鍵盤輸入一個(gè)字符。其一般形式如下:getchar();通常把輸入的字符賦給一個(gè)字符變量,構(gòu)成賦值語(yǔ)句,例如:charc;c=getchar(); //從鍵盤輸入一個(gè)字符賦給變量c5.4PARTTWO順序結(jié)構(gòu)程序設(shè)計(jì)舉例
所謂順序結(jié)構(gòu),是指程序從頭到尾按部就班地執(zhí)行下去,不會(huì)出現(xiàn)中途放棄或者跳轉(zhuǎn)的情況。
相應(yīng)的程序稱為順序結(jié)構(gòu)程序。
順序結(jié)構(gòu)是程序設(shè)計(jì)中最簡(jiǎn)單的程序結(jié)構(gòu),也是最常用的程序結(jié)構(gòu),只要按照解決問(wèn)題的先后順序?qū)懗鱿鄳?yīng)的語(yǔ)句即可,它的執(zhí)行順序是自上而下,依次執(zhí)行。順序結(jié)構(gòu)程序設(shè)計(jì)【例5-4-1】使用“第三變量法”交換a和b之中的數(shù)據(jù)。行業(yè)PPT模板/hangye/#include<stdio.h>intmain(){inta,b,t;printf("輸入兩個(gè)數(shù):");scanf("%d%d",&a,&b);t=a;a=b;b=t; //第三變量法,將a和b的值互換
printf("a=%db=%d\n",a,b);return0;}程序運(yùn)行結(jié)果如圖所示:預(yù)處理命令“#include”行業(yè)PPT模板/hangye/
在使用C語(yǔ)言庫(kù)函數(shù)時(shí),要用預(yù)處理命令“#include”將有關(guān)頭文件包含到源文件中。
在使用標(biāo)準(zhǔn)輸入/輸出庫(kù)函數(shù)時(shí)需要用到“stdio.h”文件,因此源文件開(kāi)頭應(yīng)有以下預(yù)處理命令:#include<stdio.h>或#include"stdio.h"5.3.1printf()函數(shù)printf()函數(shù)是格式化輸出函數(shù),其功能是按照用戶指定的格式,把指定的數(shù)據(jù)輸出到屏幕上。printf()函數(shù)的格式如下:printf("格式控制字符串",輸出表項(xiàng));
【例5-3-1】整型數(shù)據(jù)的輸出。行業(yè)PPT模板/hangye/#include<stdio.h>intmain(){inta=11,b=22;intm=-1;longn=123456789;printf("%d%d\n",a,b); printf("a=%d,b=%d\n",a,b); printf("m:%d,%o,%x,%u\n",m,m,m,m); printf("n=%d\n",n);printf("n=%ld\n",n); return0;}程序運(yùn)行結(jié)果如圖所示:練一練行業(yè)PPT模板/hangye/
編程實(shí)現(xiàn):從鍵盤輸入一個(gè)小寫字母,輸出相應(yīng)的大寫字母。參考程序行業(yè)PPT模板/hangye/
#include"stdio.h"main(){charch;
printf("Enteraminuscule:");ch=getchar();ch=ch-32; //相應(yīng)的大小寫字母ASCII碼相差32putchar(ch);
return0;}5.5PARTTWO模擬交通燈控制系統(tǒng)設(shè)計(jì)
交通燈有定時(shí)控制、按鍵控制、感應(yīng)控制、自適應(yīng)控制等多種控制方式,根據(jù)之前學(xué)過(guò)的知識(shí),可以用延時(shí)函數(shù)
delay()實(shí)現(xiàn)交通燈定時(shí)控制的效果,那么,如何用Arduino開(kāi)發(fā)板來(lái)模擬控制交通燈呢?【案例導(dǎo)入】5.5.1硬件電路設(shè)計(jì)行業(yè)PPT模板/hangye/
所需硬件包括:
ArduinoUNO(1塊)。
面包板(1塊)。
220電阻(3個(gè))。
LED(3個(gè))。
面包板導(dǎo)線(若干)。硬件連接示意圖行業(yè)PPT模板/hangye/
程序代碼如下:5.5.2程序設(shè)計(jì)思考行業(yè)PPT模板/hangye/
如果用12個(gè)LED模擬十字路口四個(gè)方向交通燈的運(yùn)行情況,電路應(yīng)如何設(shè)計(jì)?程序應(yīng)如何編寫?行業(yè)PPT模板/hangye/1.器材準(zhǔn)備2.職業(yè)素養(yǎng)3.電路的安裝4.程序設(shè)計(jì)及下載5.通電調(diào)試6.常見(jiàn)故障分析與排除
5.5.2任務(wù)實(shí)施及效果練一練行業(yè)PPT模板/hangye/
完成行人請(qǐng)求式過(guò)街信號(hào)燈系統(tǒng)設(shè)計(jì):
為防止信號(hào)燈頻繁變化影響正常道路交通秩序,在部分路口設(shè)置有行人請(qǐng)求式過(guò)街信號(hào)燈,過(guò)街行人在路口按下按鍵后進(jìn)入6秒倒計(jì)時(shí),隨后車流信號(hào)燈變?yōu)榧t燈,過(guò)街信號(hào)燈變?yōu)榫G燈,時(shí)長(zhǎng)為20秒,行人可迅速通過(guò)。如果沒(méi)有行人按壓按鍵,則車流信號(hào)燈保持常綠狀態(tài)。學(xué)習(xí)完畢,謝謝觀看!智能小車C語(yǔ)言程序控制第六章
制作小夜燈目錄CONTENTS1選擇語(yǔ)句2相關(guān)案例介紹6.1PARTONE選擇語(yǔ)句6.1.1基本if語(yǔ)句
基本if語(yǔ)句的格式如下:if(表達(dá)式){語(yǔ)句1;語(yǔ)句2;…語(yǔ)句n;}基本if語(yǔ)句的執(zhí)行過(guò)程。(1)首先對(duì)if后面括號(hào)里的表達(dá)式進(jìn)行判斷。(2)如果表達(dá)式的值為真或者非0,則執(zhí)行表達(dá)式后面的語(yǔ)句1至語(yǔ)句n。(3)如果表達(dá)式的值為假或者0,則跳過(guò)if語(yǔ)句執(zhí)行下一條語(yǔ)句。行業(yè)PPT模板/hangye/(1)“if(表達(dá)式)”后面沒(méi)有分號(hào)。(2)if語(yǔ)句中的表達(dá)式可以是關(guān)系表達(dá)式、邏輯表達(dá)式或數(shù)值表達(dá)式。(3)如果大括號(hào)中只有一條語(yǔ)句,那么大括號(hào)可以省略,本書建議不要省略大括號(hào)。小貼士【例6-1-1】打開(kāi)C語(yǔ)言編譯器,輸入下列代碼。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果【例6-1-2】從鍵盤輸入兩個(gè)整數(shù),按照由大到小的順序輸出這兩個(gè)數(shù)。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果【例6-1-3】輸入三個(gè)數(shù)a、b、c,要求按由小到大的順序輸出這三個(gè)數(shù)。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果行業(yè)PPT模板/hangye/
輸入一個(gè)字符,判斷它是否為大寫字母,若是則將其轉(zhuǎn)換成小寫字母,若不是則不轉(zhuǎn)換,然后輸出最后得到的字符。練一練6.1.2if-else語(yǔ)句基本if語(yǔ)句是單分支選擇結(jié)構(gòu),if-else語(yǔ)句是雙分支選擇結(jié)構(gòu)。在雙分支選擇結(jié)構(gòu)中,if語(yǔ)句對(duì)表達(dá)式進(jìn)行判斷,當(dāng)表達(dá)式的值為真時(shí)執(zhí)行if后面的語(yǔ)句1至語(yǔ)句n,為假則執(zhí)行else后面的語(yǔ)句1至語(yǔ)句n,格式如右邊所示:if(表達(dá)式){ 語(yǔ)句1; 語(yǔ)句2; … 語(yǔ)句n;}else{ 語(yǔ)句1; 語(yǔ)句2; … 語(yǔ)句n;}行業(yè)PPT模板/hangye/(1)在if-else語(yǔ)句中,如果if或else后面只有一條語(yǔ)句,那么可以省略大括號(hào)。(2)在C語(yǔ)言中“==”是關(guān)系運(yùn)算符,而“=”表示賦值,如a=0表示將0賦給a,而a==0表示a的值是否為0的布爾運(yùn)算。小貼士【例6-1-4】用鍵盤輸入一個(gè)數(shù)字,如果輸入的數(shù)字為0,就顯示“你好”,否則顯示“hello”。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果【例6-1-5】用鍵盤輸入當(dāng)前溫度,如果大于或等于30℃就提示開(kāi)啟空調(diào),如果小于30℃則提示不開(kāi)啟空調(diào)。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果【例6-1-6】小明跟著媽媽去逛超市,總共花費(fèi)m元,小明給了超市收銀員n元,請(qǐng)問(wèn)超市收銀員需要給小明找多少零錢,請(qǐng)?jiān)O(shè)計(jì)一個(gè)程序幫助小明。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果拓展行業(yè)PPT模板/hangye/通過(guò)鍵盤輸入兩個(gè)數(shù)a和b,輸出兩個(gè)數(shù)中較大的數(shù)。程序如下:拓展行業(yè)PPT模板/hangye/能不能用條件表達(dá)式將上述程序簡(jiǎn)化一下呢?簡(jiǎn)化后的程序如下:拓展行業(yè)PPT模板/hangye/下面的語(yǔ)句和語(yǔ)句max=(a>b)?a:b;等效。if(a>b){ max=a;}else{max=b;}條件表達(dá)式的一般形式如下:表達(dá)式1?表達(dá)式2:表達(dá)式3如果表達(dá)式1成立就執(zhí)行表達(dá)式2,否則執(zhí)行表達(dá)式3。行業(yè)PPT模板/hangye/
請(qǐng)編寫一個(gè)程序,從鍵盤輸入一個(gè)整數(shù),判斷該數(shù)是否為偶數(shù)。練一練6.1.3嵌套if語(yǔ)句如果程序的邏輯判斷關(guān)系比較復(fù)雜,可以采用嵌套if語(yǔ)句,即在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句,其一般形式如右所示:if(表達(dá)式){ if(表達(dá)式){ 語(yǔ)句塊} else{ 語(yǔ)句塊}}else{ if(表達(dá)式){ 語(yǔ)句塊} else{ 語(yǔ)句塊}}【例6-1-7】有一個(gè)函數(shù)y=,要求編寫一個(gè)程序,輸入一個(gè)自變量整數(shù)x,程序輸出一個(gè)因變量y。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果【例6-1-8】在一個(gè)房間中如果傳感器采集到的溫度大于或等于30℃,并且房間內(nèi)有人,則提示空調(diào)打開(kāi),否則提示空調(diào)關(guān)閉。注意:在程序中輸入0表示無(wú)人,輸入其他數(shù)字表示有人,采集的溫度為人工模擬輸入溫度。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果拓展行業(yè)PPT模板/hangye/圖2-6-10和圖2-6-11中的兩個(gè)程序功能相同,都是實(shí)現(xiàn)對(duì)輸入的三個(gè)數(shù)進(jìn)行升序排列。在編寫程序時(shí)應(yīng)盡量實(shí)現(xiàn)單出口,以便后續(xù)程序調(diào)用其中的變量。行業(yè)PPT模板/hangye/
小貼士
在嵌套if語(yǔ)句中,每個(gè)else與離它最近且沒(méi)有其他else與之對(duì)應(yīng)的if相配對(duì),如果if與else的數(shù)目不一樣,可以加大括號(hào)來(lái)確定配對(duì)關(guān)系。建議在if或else后面使用大括號(hào),即使只有一條語(yǔ)句。練一練
從鍵盤輸入兩個(gè)數(shù)a和b,編寫一個(gè)程序判斷a與b的關(guān)系(大于、小于、等于)。
6.1.4if-else-if語(yǔ)句采用嵌套if語(yǔ)句是為了實(shí)現(xiàn)多分支選擇,但程序結(jié)構(gòu)不夠清晰,所以一般情況下較少使用if語(yǔ)句的嵌套結(jié)構(gòu),而使用if-else-if語(yǔ)句來(lái)實(shí)現(xiàn)多分支選擇。【例6-1-9】有一個(gè)函數(shù)y=,要求編寫一個(gè)程序,輸入一個(gè)自變量整數(shù)x,程序輸出一個(gè)因變量y。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果【例6-1-10】根據(jù)溫度判斷天氣舒適度。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果拓展行業(yè)PPT模板/hangye/if-else-if語(yǔ)句解決了if嵌套語(yǔ)句中代碼編排的問(wèn)題和多出口問(wèn)題。為了保證程序結(jié)構(gòu)清晰,通常提倡將程序?qū)懗射忼X形式,復(fù)雜的if嵌套語(yǔ)句會(huì)導(dǎo)致代碼往右縮進(jìn)嚴(yán)重,不便于屏幕顯示,而級(jí)聯(lián)if語(yǔ)句可以讓代碼更好地適應(yīng)屏幕要求,讓程序更便于閱讀。拓展行業(yè)PPT模板/hangye/if-else-if的級(jí)聯(lián)if語(yǔ)句和并列if語(yǔ)句的結(jié)果不同。如圖2-6-14和圖2-6-15所示,這兩個(gè)程序的運(yùn)行結(jié)果不一樣。兩個(gè)程序的不同之處就是圖2-6-15所示程序把第二次和第三次的if判斷換成了else-if判斷。這兩個(gè)程序都沒(méi)有編譯錯(cuò)誤,但是圖2-6-14所示程序能正確輸出排列結(jié)果,而圖2-6-15所示程序輸出結(jié)果如圖2-6-16所示,這是因?yàn)樗牡诙闻袛嗍窃诘谝淮闻袛嗟幕A(chǔ)上進(jìn)行的,第二次判斷的條件是a<=b且a>c,執(zhí)行完此次判斷后a<=b且a<=c,第三次判斷是在a<=b且a<=c的基礎(chǔ)上比較b和c的大小,執(zhí)行完結(jié)果是a<=b、a<=c且b<=c,但是這個(gè)程序?qū)>b這種情況沒(méi)有進(jìn)行判斷,所以會(huì)出現(xiàn)圖2-6-16所示的情況,即只比較了a和b的大小。拓展行業(yè)PPT模板/hangye/行業(yè)PPT模板/hangye/
小貼士
級(jí)聯(lián)if語(yǔ)句中else-if中的else也是if語(yǔ)句的一部分,它與離它最近且沒(méi)有其他else與之對(duì)應(yīng)的if相配對(duì)。練一練
編寫一個(gè)程序?qū)崿F(xiàn)從鍵盤輸入一個(gè)整數(shù),判斷輸入的整數(shù)是正整數(shù)、負(fù)整數(shù)還是零。
6.1.5switch語(yǔ)句多分支選擇結(jié)構(gòu)使用if-else-if語(yǔ)句時(shí),程序顯得復(fù)雜冗長(zhǎng),可讀性較差,所以C語(yǔ)言提供了另外一種用于多分支選擇的語(yǔ)句—switch語(yǔ)句,它能使程序變得簡(jiǎn)潔。switch語(yǔ)句的一般形式如下:switch(表達(dá)式){ case常量1:語(yǔ)句1;break; case常量2:語(yǔ)句2;break; … case常量n:語(yǔ)句n;break; default:語(yǔ)句n+1;}6.1.5switch語(yǔ)句switch后面的表達(dá)式是選擇條件,可以是單個(gè)變量,也可以是變量組合成的表達(dá)式,其最終的結(jié)果必須是一個(gè)整數(shù)。大括號(hào)內(nèi)的所有內(nèi)容是switch語(yǔ)句的主體,包含多個(gè)case分支,判斷值必須是常量,case分支根據(jù)判斷值標(biāo)識(shí)條件的入口??梢詫witch語(yǔ)句看成一種基于計(jì)算的跳轉(zhuǎn),計(jì)算控制表達(dá)式的值后,程序會(huì)跳轉(zhuǎn)到相匹配的case分支。在執(zhí)行完分支中的最后一條語(yǔ)句后,如果后面沒(méi)有break,就會(huì)順序執(zhí)行下面的case分支,直至遇到break,或者switch語(yǔ)句結(jié)束為止。【例6-1-11】根據(jù)輸入的月份顯示該月份對(duì)應(yīng)的英文。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果【例6-1-12】請(qǐng)編寫程序,由鍵盤輸入成績(jī)的等級(jí),該程序能夠根據(jù)成績(jī)的等級(jí)輸出百分制分?jǐn)?shù)段,A等為90分以上,B等為80~89分,C等為70~79分,D等為60~69分,E等為60分以下。行業(yè)PPT模板/hangye/程序運(yùn)行結(jié)果行業(yè)PPT模板/hangye/
小貼士
(1)switch后面表達(dá)式的結(jié)果只能是整數(shù)。case后面的常量可以是常數(shù),也可以是常數(shù)計(jì)算的表達(dá)式。(2)在每個(gè)case后面帶一個(gè)break才能跳出switch選擇結(jié)構(gòu),否則會(huì)執(zhí)行下一條case語(yǔ)句。
行業(yè)PPT模板/hangye/
小貼士
switch語(yǔ)句的執(zhí)行過(guò)程如下。(1)首先計(jì)算“表達(dá)式”的值,假設(shè)為a。(2)從第一個(gè)case開(kāi)始,比較“常量1”和a,如果“常量1”和a不相等,就跳過(guò)冒號(hào)后面的“語(yǔ)句1”,繼續(xù)比較第二個(gè)case、第三個(gè)case等。如果它們相等,就執(zhí)行冒號(hào)后面的語(yǔ)句,一旦遇到break,就跳出switch語(yǔ)句。假設(shè)a和“常量5”相等,那么就會(huì)從“語(yǔ)句5”一直執(zhí)行到“語(yǔ)句n+1”。(3)如果直到“常量n”都沒(méi)有找到相等的數(shù)值,那么就執(zhí)行default后的“語(yǔ)句n+1”。練一練
請(qǐng)用switch語(yǔ)句編寫一個(gè)程序,根據(jù)用戶輸入的駕照類型,輸出他可以駕駛的車輛類型。
6.1.6選擇結(jié)構(gòu)的應(yīng)用項(xiàng)目案例數(shù)字猜猜猜小游戲是一個(gè)經(jīng)典小游戲,在本文中,猜數(shù)字小游戲主要的功能如下所示:1、登入猜數(shù)字小游戲系統(tǒng),顯示小時(shí)歡迎界面。2、用戶猜的數(shù)字有系統(tǒng)隨機(jī)在1-30之間生成。3、用戶可以有5次機(jī)會(huì)猜這個(gè)隨機(jī)生成的數(shù)字。4、若用戶猜大了,則系統(tǒng)會(huì)顯示猜大了,并提示還有多少猜數(shù)字的機(jī)會(huì)。5、若5次都沒(méi)有猜中系統(tǒng)隨機(jī)生成的數(shù)字,則游戲結(jié)束。該游戲首先定義select變量,根據(jù)用戶輸入的值,給變量select賦值,根據(jù)輸入的select值,進(jìn)入switch分支語(yǔ)句進(jìn)行判斷實(shí)現(xiàn)開(kāi)始游戲或退出游戲選擇。使用if-else-if語(yǔ)句實(shí)現(xiàn)游戲猜測(cè)判斷以及剩余次數(shù)提醒。}6.2PARTTWO相關(guān)案例介紹6.2.1用計(jì)算機(jī)指令控制LED本案例通過(guò)控制計(jì)算機(jī)輸入的指令來(lái)控制LED的亮滅。硬件清單如下:(1)Arduino開(kāi)發(fā)板1塊。(2)發(fā)光二極管1個(gè)。(3)限流電阻1個(gè)。本案例的實(shí)物連接圖如圖2-6-19所示。6.2.1用計(jì)算機(jī)指令控制LED6.2.2用按鍵控制LED本案例用一個(gè)按鍵控制一個(gè)LED,用選擇語(yǔ)句編寫程序。按鍵屬于開(kāi)關(guān)量(數(shù)字量)元件,按下時(shí)為閉合(導(dǎo)通)狀態(tài)。本案例要用到的硬件清單如下:(1)Arduino開(kāi)發(fā)板1塊。(2)按鍵1個(gè)。(3)發(fā)光二極管1個(gè)。(4)限流電阻1個(gè)(配合發(fā)光二極管使用,本案例使用330Ω電阻)。(5)限流電阻1個(gè)(配合按鍵使用,本案例使用10kΩ電阻)。(6)面包板1塊。(7)面包板導(dǎo)線若干。將按鍵接到開(kāi)發(fā)板7號(hào)引腳,LED接到開(kāi)發(fā)板11號(hào)引腳,按圖2-6-23連接好電路。6.2.2用按鍵控制LED6.2.2用按鍵控制LED6.2.2用按鍵控制LED6.2.3制作神奇小夜燈本案例主要介紹如何利用Arduino開(kāi)發(fā)板制作神奇小夜燈。這個(gè)小夜燈神奇在何處呢?它能自動(dòng)感應(yīng)光線,只有光線暗淡時(shí)才會(huì)亮起。本案例中用LED模擬小夜燈。如圖2-6-27所示,光線充足時(shí)LED不亮。如圖2-6-28所示,用筆帽對(duì)光敏電阻進(jìn)行遮擋,模擬光線暗淡的情況,這時(shí)LED點(diǎn)亮。6.2.3制作神奇小夜燈本案例需要的硬件清單如下:(1)Arduino開(kāi)發(fā)板1塊。(2)發(fā)光二極管1個(gè)。(3)限流電阻1個(gè)(配合LED使用,本案例使用330電阻)。(4)面包板1塊。(5)面包板導(dǎo)線若干。(6)5528光敏電阻1個(gè)。(7)分壓電阻1個(gè)(10k,配合5528光敏電阻使用)。6.2.3制作神奇小夜燈6.2.3制作神奇小夜燈行業(yè)PPT模板/hangye/
串口通信屬于異步串行通信,串行通信是將數(shù)據(jù)按位在一條傳輸線上依次傳輸,每一位為1或0。在本章Arduino案例中使用USB線建立串口連接。波特率是指一個(gè)設(shè)備在一秒鐘內(nèi)發(fā)送(或接收)了多少比特的數(shù)據(jù),它反映了設(shè)備發(fā)送(或接收)數(shù)據(jù)的快慢。為了保證串行通信順利進(jìn)行,數(shù)據(jù)發(fā)送方發(fā)送數(shù)據(jù)的速率與數(shù)據(jù)接收方接收數(shù)據(jù)的速率要保持一致。串口通信的常用函數(shù)如下:(1)Serial
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠色有機(jī)肥料購(gòu)銷合同
- 獵頭招聘服務(wù)合同權(quán)益法律服務(wù)
- 羊絨毛皮購(gòu)銷合同
- 工程居間合作合同范本
- 代理人權(quán)益保證函
- 散裝貨物運(yùn)輸合同
- 企業(yè)團(tuán)隊(duì)建設(shè)培訓(xùn)條款
- 商業(yè)服務(wù)合同終止
- 報(bào)效國(guó)家的軍人諾言
- 汽車租賃合同協(xié)議范本
- 10.2+文化自信與文明交流互鑒【中職專用】高一思想政治《中國(guó)特色社會(huì)主義》(高教版2023基礎(chǔ)模塊)
- 專項(xiàng)訓(xùn)練:坐標(biāo)的變化(30題)(原卷版+解析)
- 2024年新人教版一年級(jí)數(shù)學(xué)上冊(cè)課件 第六單元 復(fù)習(xí)與關(guān)聯(lián) 1.數(shù)與運(yùn)算
- 2024年中考英語(yǔ)專項(xiàng)復(fù)習(xí)訓(xùn)練:語(yǔ)法填空20篇【附解析】
- 中國(guó)華能招聘筆試題庫(kù)2024
- 七年級(jí)上冊(cè)《朝花夕拾》梳理及真題訓(xùn)練(含答案)
- 《人工智能基礎(chǔ)》課件-AI的前世今生:她從哪里來(lái)
- 2023年12月英語(yǔ)四級(jí)真題及答案-第2套
- 安全操作規(guī)程匯編(服裝廠)
- 北師大版七上冊(cè)數(shù)學(xué)期末沖刺復(fù)習(xí)
- 物流管理專業(yè)培養(yǎng)專題方案調(diào)研綜合報(bào)告樣本
評(píng)論
0/150
提交評(píng)論