智能小車C語言程序控制 課件 第五章 制作模擬交通燈_第1頁
智能小車C語言程序控制 課件 第五章 制作模擬交通燈_第2頁
智能小車C語言程序控制 課件 第五章 制作模擬交通燈_第3頁
智能小車C語言程序控制 課件 第五章 制作模擬交通燈_第4頁
智能小車C語言程序控制 課件 第五章 制作模擬交通燈_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

智能小車C語言程序控制秦磊

梁爽

主編第五章:制作模擬交通燈

交通燈中有一種“行人請求式過街信號燈”,即在路口燈柱上設置一個按鈕,可以一鍵控制路口綠燈,方便行人緊急通行,試用Arduino系統(tǒng)設計完成,通過一個按鍵控制LED的亮滅?【案例導入】【案例導入】:案例程序行業(yè)PPT模板/hangye/constintbuttonPin=2;

//定義按鍵輸入引腳為2號引腳constintledPin=13;

//定義LED輸入引腳為13號引腳//注:此處使用的LED是Arduino開發(fā)板自帶的LEDintbuttonState=0;

//定義按鍵狀態(tài)變量初始值為0//對Arduino開發(fā)板或相關狀態(tài)進行初始化voidsetup(){

pinMode(ledPin,OUTPUT);

//設置ledPin端口為輸出端口

pinMode(buttonPin,INPUT);

//設置buttonPin端口為輸入端口}//系統(tǒng)調(diào)用,無限循環(huán)voidloop()

{

buttonState=digitalRead(buttonPin);

//讀取按鍵狀態(tài)

(buttonState==HIGH)?digitalWrite(ledPin,HIGH):digitalWrite(ledPin,LOW);//檢查按鍵狀態(tài),如果為HIGH,則點亮LED,否則熄滅LED}5.1PARTONE運算符與表達式運算符與表達式

運算符是告訴編譯程序執(zhí)行特定算術或邏輯操作的符號,即用來對數(shù)據(jù)進行運算的符號。

表達式是由變量、常量和運算符組成的式子,它描述了一個具體的求值運算過程。表達式求值按運算符的優(yōu)先級和結合性所規(guī)定的順序進行。C語言運算符5.1.1算術運算符和算術表達式1.算術運算符2.算術表達式

用算術運算符和括號將運算對象連接起來的、符合C語言語法規(guī)則的式子,稱為算術表達式。運算對象包括常量、變量、函數(shù)等。例如:3+4.5*a-b*4/3-

-a+b%c5.1.2賦值運算符和賦值表達式1.基本賦值運算符賦值運算符“=”的作用是將賦值運算符右邊的表達式的值賦給其左邊的變量。例如,b=88就是將常量88賦給變量b。賦值運算符的左邊必須是變量,右邊可以是C語言中任意合法的表達式。由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式。其格式如下:<變量><賦值運算符><表達式>5.1.2賦值運算符和賦值表達式2.復合賦值運算符

為了簡化程序并提高編譯效率,C語言允許在賦值運算符“=”之前加上其他運算符,以構成復合賦值運算符,例如:x=x+5可以寫成x+=5。x=x*(y+1)可以寫成x*=y+1。

可以這樣理解,對于A+=B這樣的式子,相當于將A+復制到“=”的右邊變成A=A+B。若B是一個表達式,則相當于B的兩邊有一個括號。例如,x*=y+z等價于x=x*(y+z)。C語言中的復合算術賦值運算符有:+=、-=、*=、/=、%=。練一練行業(yè)PPT模板/hangye/嘗試分析以下程序的運行結果。#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關系運算符和關系表達式1.關系運算符關系運算是邏輯運算的一種簡單形式,主要用于比較。5.1.3關系運算符和關系表達式2.關系表達式

由關系運算符和操作數(shù)組成的表達式稱為關系表達式,例如:a+b>cx>yz!=x15*y==20

關系表達式的值只有兩個,即“真”和“假”。在C語言中“真”用1表示,“假”用0表示。當關系式成立時其值為“真”,否則為“假”。練一練行業(yè)PPT模板/hangye/嘗試分析以下程序的運行結果。#include<stdio.h>main(){

intx=20;inty=40;printf("%d\n",x<y);

printf("%d\n",x>y);

return0;}5.1.4邏輯運算符和邏輯表達式

邏輯運算就是將關系表達式或邏輯量用邏輯運算符連接起來,并對其求值的一個運算過程。

1.邏輯運算符為了表示復雜的條件,需要將若干個關系表達式連接起來,C語言提供的邏輯運算符就是實現(xiàn)這一目的的,邏輯運算符有:&& 邏輯與|| 邏輯或! 邏輯非設A和B為參加運算的邏輯量,則以上運算符的含義見下表2.邏輯表達式

邏輯表達式是用邏輯運算符將關系表達式或邏輯量連接起來的有意義的式子。邏輯表達式的值也只有兩個,即“真”和“假”,其表示方法同關系表達式,用1表示“真”,用0表示“假”。

可以將邏輯表達式的結果賦給一個整型或字符型變量,如當x=10,y=15時,下面的語句是正確的。z=(x!=y)&&(y==15); /*z的值為1*/a=(x==y)||(x==15); /*a的值為0*/

5.1.5條件運算符和條件表達式條件運算符需要有三個操作對象,稱為三目運算符,它是C語言中唯一的一個三目運算符。它可以替代部分選擇流程控制語句。條件運算符構成的表達式稱為條件表達式,又稱問號表達式。條件表達式的一般形式如下:表達式1?表達式2:表達式3條件表達式的執(zhí)行行業(yè)PPT模板/hangye/

條件表達式的執(zhí)行過程:

當表達式1的值為“真”(非0)時,條件表達式取表達式2的值,否則取表達式3的值。具體執(zhí)行過程如下圖所示。條件運算符的優(yōu)先級行業(yè)PPT模板/hangye/

小貼士條件運算符的優(yōu)先級比賦值運算符高,比關系運算符和算術運算符低。例如:min=(a<b)?a:b中的括號可以不要,寫成min=a<b?a:b;而min=a<b?a:b*2相當于min=a<b?a:(b*2),而不是min=(a<b?a:b)*2?!纠?-1-1】輸入一個字符,判別是否為小寫字母,如果是,則將其轉(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;}程序運行結果如圖所示:【例5-1-2】使用條件表達式實現(xiàn)求三個整數(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("三個整數(shù)中最大的值為%d\n",max);

return0;}程序運行結果如圖所示:5.1.6逗號運算符和逗號表達式在C語言中,逗號既可以作為分隔符使用,又是一種運算符,用逗號將若干個表達式分開便構成了逗號表達式。其一般形式如下:表達式1,表達式,…,表達式n逗號表達式的運算次序如下:先計算表達式1的值,再計算表達式2的值,最后計算表達式n的值。逗號表達式的值為表達式n的值。例如:13,17,19,23-11是一個逗號表達式,其值為23-11,即12。5.1.7sizeof運算符

sizeof運算符以字節(jié)形式給出其操作數(shù)在內(nèi)存中占用空間的大小。1.用于數(shù)據(jù)類型使用形式:sizeof(type)數(shù)據(jù)類型名必須用括號括起來,如sizeof(int)。2.用于變量使用形式:sizeof(var_name)5.1.8數(shù)據(jù)類型轉(zhuǎn)換

不同類型數(shù)據(jù)的存儲形式有所區(qū)別,如字符型數(shù)據(jù)在內(nèi)存中是以ASCII碼的形式存儲的,與整型數(shù)據(jù)的存儲形式類似。

除字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用之外,不同類型的數(shù)據(jù)在進行混合運算時,往往需要進行類型轉(zhuǎn)換。5.1.9運算符的優(yōu)先級和結合性

C語言中的運算符和數(shù)學運算符類似,不僅具有不同的優(yōu)先級,而且有相應的結合性。

在C語言中,運算符的優(yōu)先級共分為15級。1級最高,15級最低。在表達式中,優(yōu)先級較高的運算符先于優(yōu)先級較低的運算符進行運算。

C語言中運算符的結合性分為兩種,即自左至右和自右至左。5.2PARTTWO語句

C程序的功能是通過執(zhí)行語句實現(xiàn)的。語句的作用是向計算機系統(tǒng)發(fā)出操作指令,要求其執(zhí)行相應的操作。

一個C程序可以由若干個源程序文件組成,一個源程序文件可以由若干個函數(shù)和預處理命令及全局變量聲明部分組成。

一個函數(shù)由數(shù)據(jù)聲明部分和執(zhí)行語句組成。

在C程序中,任何以分號結尾的表達式都是一條語句。語句是C程序的基本組成部分C語句的分類行業(yè)PPT模板/hangye/

(1)表達式語句。(2)控制語句。(3)復合語句。(4)空語句。(5)函數(shù)調(diào)用語句。1.表達式語句

表達式語句是由表達式加上分號組成的。其一般形式如下:表達式;

一個表達式的末尾加一個分號就構成了一條語句。表達式語句的末尾必須有一個分號。2.控制語句

控制語句用于完成一定的控制功能??刂普Z句是用于控制程序的流程,以實現(xiàn)程序的各種結構方式的語句。它由特定的語句定義符組成。C語言中的控制語句有以下幾種。(1)條件語句:if語句、switch語句。(2)循環(huán)語句:do-while語句、while語句、for語句。(3)轉(zhuǎn)向語句:break語句、goto語句、continue語句、return語句。3.復合語句

C程序中把多條語句用大括號括起來組成的一條語句稱為復合語句。在程序中應把復合語句看成單條語句,而不是多條語句。

復合語句內(nèi)的各條語句都必須以分號結尾,而在大括號外不能再加分號。4.空語句

僅由分號組成的語句稱為空語句??照Z句是什么也不執(zhí)行的語句。在程序中空語句可用作空循環(huán)體。例如:while(getchar()!='\n');上述語句的功能是,只要從鍵盤輸入的字符不是回車符就重新輸入。這里的循環(huán)體為空語句。5.函數(shù)調(diào)用語句

函數(shù)調(diào)用語句由一個函數(shù)調(diào)用加一個分號構成。其一般形式如下:函數(shù)名(實際參數(shù)表);執(zhí)行函數(shù)調(diào)用語句就是調(diào)用函數(shù)體,并把實際參數(shù)賦予函數(shù)定義中的形式參數(shù),然后執(zhí)行被調(diào)用函數(shù)體中的語句,求取函數(shù)值。5.3PARTTWOC語言中的基本輸入/輸出函數(shù)

C語言標準庫提供了兩個控制臺格式化輸入/輸出函數(shù):scanf()和printf()。這兩個函數(shù)可以在標準輸入/輸出設備上以各種不同的格式讀/寫數(shù)據(jù)。scanf()函數(shù)用來從標準輸入設備(鍵盤)上讀數(shù)據(jù),printf()函數(shù)用來向標準輸出設備(顯示器)寫數(shù)據(jù)。數(shù)據(jù)輸入/輸出庫函數(shù)預處理命令“#include”行業(yè)PPT模板/hangye/

在使用C語言庫函數(shù)時,要用預處理命令“#include”將有關頭文件包含到源文件中。

在使用標準輸入/輸出庫函數(shù)時需要用到“stdio.h”文件,因此源文件開頭應有以下預處理命令:#include<stdio.h>或#include"stdio.h"5.3.1printf()函數(shù)printf()函數(shù)是格式化輸出函數(shù),其功能是按照用戶指定的格式,把指定的數(shù)據(jù)輸出到屏幕上。printf()函數(shù)的格式如下:printf("格式控制字符串",輸出表項);

【例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;}程序運行結果如圖所示:5.3.2scanf()函數(shù)scanf()函數(shù)是格式化輸入函數(shù),即按照格式控制字符串規(guī)定的格式,從鍵盤上把數(shù)據(jù)輸入指定的變量之中。scanf()函數(shù)的一般形式如下:

scanf("格式控制字符串",輸入項地址列表);

小貼士行業(yè)PPT模板/hangye/(1)在格式控制字符串中可以指定數(shù)據(jù)的寬度,但不能指定數(shù)據(jù)的精度。例如:float

a;scanf("%10f",&a);

//正確scanf("%10.2f",&a);

//錯誤(2)輸入long型數(shù)據(jù)時必須使用%ld,輸入double型數(shù)據(jù)時必須使用%lf或%le。5.3.3putchar()函數(shù)putchar()函數(shù)是字符輸出函數(shù),其功能是在顯示器上輸出單個字符。其一般形式如下:putchar(字符變量);例如:putchar('A'); //輸出大寫字母Aputchar(x); //輸出字符變量x的值5.3.4getchar()函數(shù)getchar()函數(shù)的功能是從鍵盤輸入一個字符。其一般形式如下:getchar();通常把輸入的字符賦給一個字符變量,構成賦值語句,例如:charc;c=getchar(); //從鍵盤輸入一個字符賦給變量c5.4PARTTWO順序結構程序設計舉例

所謂順序結構,是指程序從頭到尾按部就班地執(zhí)行下去,不會出現(xiàn)中途放棄或者跳轉(zhuǎn)的情況。

相應的程序稱為順序結構程序。

順序結構是程序設計中最簡單的程序結構,也是最常用的程序結構,只要按照解決問題的先后順序?qū)懗鱿鄳恼Z句即可,它的執(zhí)行順序是自上而下,依次執(zhí)行。順序結構程序設計【例5-4-1】使用“第三變量法”交換a和b之中的數(shù)據(jù)。行業(yè)PPT模板/hangye/#include<stdio.h>intmain(){

inta,b,t;printf("輸入兩個數(shù):");scanf("%d%d",&a,&b);t=a;a=b;b=t; //第三變量法,將a和b的值互換printf("a=%db=%d\n",a,b);return0;}程序運行結果如圖所示:預處理命令“#include”行業(yè)PPT模板/hangye/

在使用C語言庫函數(shù)時,要用預處理命令“#include”將有關頭文件包含到源文件中。

在使用標準輸入/輸出庫函數(shù)時需要用到“stdio.h”文件,因此源文件開頭應有以下預處理命令:#include<stdio.h>或#include"stdio.h"5.3.1printf()函數(shù)printf()函數(shù)是格式化輸出函數(shù),其功能是按照用戶指定的格式,把指定的數(shù)據(jù)輸出到屏幕上。printf()函數(shù)的格式如下:printf("格式控制字符串",輸出表項);

【例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è)PPT模板/hangye/

編程實現(xiàn):從鍵盤輸入一個小寫字母,輸出相應的大寫字母。參考程序行業(yè)PPT模板/hangye/

#include"stdio.h"main

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論