# 【知識精講】在程序中學會縮進
## Part1
在學習`if`和`switch`的時候,你應該都不會忽略一點,就是我們的代碼在每一行最開始的位置有著不同的空格數,我們稱這些在每一行開始位置的空格為 **縮進(indent)**。
在程序設計中,對于同一個“層級”(同屬一部分代碼塊)的代碼,我們需要使用相同的縮進進行組織。通過縮進,我們可以讓程序變得更為容易讀懂。
## Part2
先讓我們來看一個同學的代碼:
~~~
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main() {
int first;
int second;
char operator;
cin>>first>>operator>>second;
switch (operator) {
case '+':
cout << "=" << firs t+ second << endl;
break;
case '-':
cout <<"="<<first+second<<endl; break;
default: cout<<"ERROR!"<<endl;
}
return 0;
}
~~~
這是不是和你剛才完成的代碼很像呢?你能很容易的看出這些語句之間的層次關系嗎?有沒有覺得這個代碼亂糟糟的?你知道怎么讓這個代碼變得更容易被維護呢?
## Part3
那么,讓老師帶你一起看看,在寫程序的時候,有哪些地方必須要縮進呢?
* `if`,`else`,`switch`,`for`,`while`,`do`等關鍵字后用于組織代碼塊的大括號內(或這些關鍵字后單行代碼塊前)
* 定義函數的大括號內
* `goto`,`case`,`default`等關鍵字的冒號后組織的一系列語句
* `struct`,`enum`,`union`類型定義時和變量初始化時所用的大括號內
如果你在遇到上述情況的時候進行縮進,你會獲得一個看起來舒服很多的程序。
## Part4
比如對于之前那份代碼,如果我們按照上一個要求進行一下修改,我們統一在每一個層級都多添加四個空格作為縮進(也有地方用 222 個空格的,但非常不建議使用制表符 Tab 進行縮進),我們將得到:
~~~
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main() {
int first;
int second;
char operator;
cin >> first >> operator >> second;
switch (operator) {
case '+':
cout << "=" << first + second << endl;
break;
case '-':
cout << "=" << first + second << endl;
break;
default:
cout << "ERROR!" << endl;
}
return 0;
}
~~~
## Part5
在上面的例子中,我們進行了如下的縮進規范:
* 在`main`函數的大括號內進行了縮進的統一
* 在`switch`關鍵字后用于組織代碼塊的大括號內進行了縮進統一
* 將`case`和`default`關鍵字的冒號后組織的一系列語句進行了縮進統一
同時,請注意,上面的例子中也已經將我們講過的換行問題進行了規范。在之后的學習過程中,你可要努力寫出良好的、易于自己和別人維護的代碼哦,在換行、縮進的問題上對自己可要嚴格要求了喔!
- 教材介紹
- 《編程初學入門常識》
- 什么是程序語言
- 【知識精講】編程與編程語言
- 【選擇測試】編程語言分類
- 【知識精講】高級語言分類
- 【選擇測試】編譯與解釋
- 【選擇測試】程序員笑話-Java
- 熟悉鍵盤上用于編程的鍵位
- 【知識精講】認識你的鍵盤
- 【知識精講】中文和英文字符
- 【匹配測試】識別中英文符號
- 【選擇測試】中英文符號的影響
- 【伴隨編程】不要使用中文引號
- 【伴隨編程】不要使用中文分號
- 【伴隨編程】正確地輸入符號
- 【選擇測試】找出程序中的錯誤
- 初始工程師思維
- 【知識精講】二進制思想
- 【選擇測試】程序員笑話-湊整
- 【知識精講】閉合的邏輯
- 【選擇測試】程序員笑話-條件
- 程序員職業與生活
- 【知識精講】程序員的發展方向
- 【知識精講】程序員的裝備
- 【知識精講】程序員的健康
- 【選擇測試】做一名健康的程序員
- 《C++程序設計》
- 前言
- 【知識精講】編程與計算機科學
- 【知識精講】編程與軟件工程
- 【知識精講】如何學習編程
- 你好C++
- 【知識精講】你好,C++
- 【知識精講】C++程序是如何開發的
- 【知識精講】成為一名Power User
- 【伴隨編程】讓我們一起說你好
- 【知識精講】你的第一個C++語言程序
- 【伴隨命令】編譯、運行你的程序
- 【伴隨編程】將變量流式輸出
- 【選擇測試】變量的作用域
- 【知識精講】變量與數據類型
- 【匹配測試】C++語言的入門概念
- 【知識精講】在程序中學會換行
- 【選擇測試】正確地換行
- 簡單數學運算
- 【知識精講】重新認識基本運算
- 【選擇測試】運算符的理解
- 【伴隨編程】做一下簡單的運算
- 【伴隨編程】a 的 n 次方
- 【知識精講】數學函數
- 【伴隨編程】讓C++語言變成計算器
- 【伴隨編程】計算球的體積
- 【匹配測試】數學世界知多少
- 【知識精講】在程序中添加注釋
- 【選擇測試】正確地寫注釋
- 從伴隨輸入到變量地址
- 【伴隨編程】 一個數字復讀機器
- 【選擇測試】理解標準輸入輸出
- 【伴隨編程】一個加法計算器
- 【程序設計】A+B+C問題
- 【伴隨編程】簡單的I/O格式控制
- 【知識精講】地址與取地址符
- 【伴隨編程】看看我們的地址
- 習題一:面積與周長
- 【程序設計】矩形面積與周長
- 【程序設計】三角形面積與周長
- 【程序設計】圓形面積與周長
- 程序中的是與非
- 【知識精講】是非的表示與關系運算
- 【伴隨編程】驗一驗關系運算式
- 【選擇測試】關系運算式求值
- 【知識精講】如果的意義
- 【伴隨編程】分段函數求值
- 【知識精講】如果之后的如果
- 【伴隨編程】五則運算器
- 【選擇測試】分支的嵌套
- 【伴隨編程】問號表達式
- 【知識精講】是非之間的邏輯組合
- 【伴隨編程】判斷閏年
- 【程序設計】日期合法性
- 【知識精講】多路順序結構
- 【知識精講】在程序中學會縮進
- 【選擇測試】正確的縮進
- C++程序中的苦力
- 【知識精講】使用循環結構
- 【選擇測試】對比兩種循環
- 【伴隨編程】使用while循環
- 【填空測試】理解循環結構
- 【知識精講】自減和自增運算符
- 【伴隨編程】使用自增運算符
- 【知識精講】for循環
- 【選擇測試】for循環的使用
- 【程序設計】一大波好玩兒的程序
- 《代碼能力快速提升》
- 《基礎數據結構》
- 《搜索入門》
- 《動態規劃基礎》
- 《數論和基礎數學》
- 《圖和數基礎》