書名: 我跟爸爸學編程:從Python到C++作者名: 葉哲語 葉洪濤本章字數: 2787字更新時間: 2020-11-23 14:59:38
第1章 Hello World
本章,我們將從最簡單的實例開始學習程序的基本結構。
幾乎所有的編程語言都喜歡將“Hello World”作為第一個實例,那么我們也先從這里開始。
例1.1 輸出文字“Hello World!”
任務描述
在輸出窗口中顯示一行文字:“Hello World!”。
我們先來看程序代碼。
Python
源程序

程序只有一句,但是這一句的格式不能寫錯,既不能寫成print 'Hello World!',也不能寫成print(Hello World!),更不能隨意增減標點符號。
計算機語言首先要求的就是嚴格,馬馬虎虎可是不行的!

程序注解
· print( ):是Python中的輸出函數,其功能是將( )中的參數值輸出到Shell窗口中。
本例中,其參數是一個字符串:'Hello World!'。注意,單引號'不可以省略,否則會顯示程序出錯。
在Python中,也可以用雙引號(" ")來代替單引號(' '),但必須成對使用。如果字符串中含有雙引號(" "),則外面就用單引號(' ')來引示,反之亦然。
· #:表示此后為注釋內容,這一部分文字程序運行時會自動忽略。
運行結果
Hello World!
C/C++
源程序

程序比Python多出好幾行,但核心的執行語句也只有一行,其他都是C語言的固定格式。同樣需要注意,格式不能寫錯。

程序注解
· main( ){ }:主函數,是C/C++程序的入口。
程序所執行的是main()函數后{ }中的語句,在此之外的語句,只有被main中的語句調用才會執行。
· printf( ):格式輸出函數,此處將字符串"Hello World!"輸出到輸出窗口。
注意:printf()函數比Python中的print()函數名結尾多了一個f。
雙引號(")不可省略,也不可以用單引號(')代替,這一點與Python不同。
C/C++中的語句以分號(;)結尾,且不可省略。
· 注釋:
C語言中的注釋用/*……*/包括起來,可跨越多行。在C/C++語法中,可使用雙斜杠(//)表示本行此后的內容均為注釋,程序編譯及運行時將自動忽略。
· #include <cstdio>:表示本程序要引用stdio(標準輸入輸出)庫函數。
因為printf()函數是在stdio函數庫中定義的,程序開頭必須寫上這一句,否則會在編譯時顯示“printf標識符未定義”。
運行結果
與Python相同。
Dev C++和VS都會將運行結果輸出到Windows操作系統的DOS窗口,這是從20世紀的DOS時代延續下來的。
C++
在C++中,還有另一種輸出方法。
源程序

程序注解
· cout: 為C++中的輸出命令,此處將字符串"Hello World!"輸出到輸出窗口。
· <<:此處為輸出運算符,該符號在別的地方還有別的含義。
· #include <iostream>:表示cout命令在iostream庫中定義。
· using namespace std :使用std命名空間。
因為cout命令在std命名空間中定義,所以,如果此處不聲明這一句,程序中就需要寫成std::cout。
運行結果
與Python相同。
例1.2 求和
任務描述
在程序中設定a=5、b=3,在窗口中輸出a+b的值。
程序代碼如下。
Python
源程序
a=5 b=3 c=a+b print('a+b=',c)
程序注解
· a=5:含義是將常量5賦值給變量a。
=稱為賦值運算符,與數學中的等式含義不同。在計算機程序中,它代表執行這一句之后,a的值變為5,而不代表之前的數值。
大家看懂上面這句話了嗎?如果暫時看不懂也沒有關系,只需先記住它與數學中的等式不同就行了。

· print('a+b=',c):輸出字符串'a+b='和變量c的數值。
很多小朋友往往搞不清print('a')和print(a)的區別,在要求輸出a的時候直接寫上print(a),這樣當然不會得到想要的結果。
這里再重申一下,'a'表示一個字符串,它會作為數據存儲在內存中。
而a在這里代表一個變量名,這只是為了方便編程人員操作而已,只在源代碼中存在。在程序編譯并執行的時候,它會轉化為內存中的一個存儲地址,而這個變量名本身已經不存在了。
而你想要輸出字母a,就必須在數據中有這個字母才行,因此只能寫成print('a')。

運行結果
a+b= 8
在上面的運行結果中,在=和8之間有一個空格,因為print()函數默認使用空格來隔開各輸出項。如果想取消這個空格,可將輸出語句改成:
print('a+b=',c,sep='')
參數sep=' '表示以一個空字符串來隔開各輸出項。
運行結果
a+b=8
C++
源程序

程序注解
· int a,b,c:設置a、b、c為整型變量,即均為整數。
在C/C++中,變量必須先聲明數據類型后才能使用,這一點與Python不同。
· a=5:將常量5賦值給變量a。
參考本例Python源程序后的說明。
運行結果
a+b=8
如果數值為小數,則需要設置變量為浮點型(float)。
可以在定義變量的同時,給變量賦初始值,相應語句如下:

運行結果
a+b=8.7
變量的定義
Python和C/C++的變量都遵循“先定義后引用”的原則,但在Python和C/C++中,變量定義的概念有所不同。
Python的變量定義在賦值時完成,如果變量未賦值就引用,在執行時編程環境會提示:程序出錯,該變量未定義。
C/C++的變量定義是在聲明變量數據類型時完成的,如果變量未聲明數據類型就賦值或引用,在編譯時會提示出錯:該變量未定義。如果變量已聲明數據類型但未賦值,在編譯時會提出警示,但程序仍然可以執行。

學到這里,大家可能會問:寫這么一大段程序來算這么簡單的一道題,有意義嗎?有那個工夫,按兩下計算器不就解決了嗎?其實,我在初學計算機編程的時候也有這個疑問,編程究竟能做什么?
請不要著急,讓我們逐個例子看下去。

以上的示例程序都是只有輸出,沒有輸入的。而在實際的軟件應用中,多數都要針對一定的輸入進行處理。
例1.3 對輸入求和
任務描述
在窗口中輸出“請輸入a:”并輸入a值,
輸出“請輸入b:”并輸入b值,
輸出a+b的值。
先看程序代碼。
Python
源程序

程序注解
· a=input('提示語'):是Python中的輸入語句,功能是顯示提示語并等待用戶輸入一段字符(按Enter鍵結束),并將輸入值賦給變量a。
運行結果(粗斜體字為輸入)
請輸入a:12 請輸入b:13 a+b=1213
大家看一下這個結果是不是有什么地方不對?12+13怎么能得1213呢?
這是因為Python 3默認input()函數的返回值數據類型是字符串,而在Python中,字符串之間是可以“相加”的,就是將字符串合并在一起。
字符串不僅可以“相加”,字符串和整數還可以“相乘”,請看下面的語句:
print('abc'*3)
運行結果
abcabcabc
如果想將輸入數據轉換為數值,則需要數據類型轉換函數。如果想轉換為整型數,則使用int()函數,如要想轉換為浮點數(小數),則使用float()。
源程序修改如下:

運行結果(粗斜體字為輸入)
請輸入a:12 請輸入b:13 a+b=25.0
結果中的25.0代表結果為浮點數。
C/C++
源程序

程序注解
· scanf("%f",&a):C/C++中的格式輸入函數。%f為格式符號,表示從輸入中掃描一個浮點數賦值給下一個參數a。
&a表示變量a的存儲地址(第12章詳解),&不可省略。
scanf()函數不能輸出提示語,所以提示語需要提前用printf()函數輸出。
· printf("a+b=%f",c):輸出a+b=(c的值),%f為格式符號,表示將下一個參數c的值轉換成浮點數輸出。
%f代表輸入/輸出格式為浮點數,格式符號與變量的對應關系見下表。
數據類型

運行結果(粗斜體字為輸入)
請輸入a:12 請輸入b:13 a+b=25.000000
如果將%f換成%g,使用VS C++輸出則不會顯示后面多余的0,使用Dev C++輸出沒有什么不同。
既然%已經被用作格式輸出符號,那么,如果想輸出一個%該怎么辦?例如90%,該怎么寫?
其實好辦,多寫一個%,寫成90%%就可以了。

C++
源程序

程序注解
· cin>>a:C++中的輸入命令,此處輸入一個數值賦值給變量a。
· >>:此處為輸入運算符,注意與輸出運算符方向相反。
該符號僅在此處用于輸入、輸出,在別處有其他含義。
運行結果(粗斜體字為輸入)
請輸入a:12 請輸入b:13 a+b=25
本章要點
· 本章學習了Python和C/C++基本的輸入/輸出函數和語句,其使用方法對比如下表所示。

· Python 中的變量必須先賦值后再引用;C/C++中的變量必須先聲明數據類型后再引用。
練習1 簡單人機對話(1)
任務描述
在窗口中輸出“請問你今年多少歲?”
輸入一個數。
輸出“再問一下,你媽媽今年多少歲?”
輸入一個數。
輸出“哦!我知道了,你媽媽比你大(輸出差值)歲。”
- Deploying Node.js
- 認識編程:以Python語言講透編程的本質
- 網頁設計與制作教程(HTML+CSS+JavaScript)(第2版)
- Modern JavaScript Applications
- C#應用程序設計教程
- C語言從入門到精通
- 基于ARM Cortex-M4F內核的MSP432 MCU開發實踐
- Learning jQuery(Fourth Edition)
- 搞定J2EE:Struts+Spring+Hibernate整合詳解與典型案例
- 小程序,巧應用:微信小程序開發實戰(第2版)
- Python趣味編程與精彩實例
- Python程序設計教程
- 基于GPU加速的計算機視覺編程:使用OpenCV和CUDA實時處理復雜圖像數據
- 軟件測試技術
- 微信小程序開發邊做邊學(微課視頻版)