〖學習筆記〗cs50 — week2 : Array
Oct 12, 2021
課程大綱
1. Function(argument, main, prototype)
2. Debug(Debugger, 模擬電腦)
3. for loop
4. Array(連續的變數)
5. String(連續的字元)
Function — main
多數的主程式都是 int main(voud)
,void是指程式內不放入參數,若要在主程式放入參數,要放入兩個參數:
int main(int argc, string argv[])
- 第一個參數
int argc
:代表在陣列裡有多少string要丟入,不用給它數字,它會自己算 - 第二個參數
string argv[]
:陣列
而主程式的參數,會在終端機的命令列提示符上輸入,底下是範例:
#include <cs50.h>
#include <stdio.h>int main(int argc, string argv[]){// 如果總共輸入兩個參數,則在hello後面丟入第二個參數
if (argc == 2) {
printf("hello, %s\n", argv[1]);
}
// 如果總共輸入三個參數,則在hello後面丟入第三個參數
else if (argc == 3) {
printf("hello, %s\n", argv[2]);
}
else {
printf("hello, world\n");
}
}
這裡輸入./command Kai Yuan,一共丟入3個string,分別是位在argv[0]、argv[1]、argv[2]:
Function — prototype
一個 Function 的長相,不包含實作。在 c 語言中,程式是由上往下執行,若 function 定義在主程式下面,一開始就要先定義 prototype,包含:
- 回傳的型態
- 函式名稱
- 傳入的參數數量跟類型
int add(int, int)
Debug
程式錯誤可以分兩種,第一種錯誤是編碼時電腦就發現錯誤,無法編碼,這時透過 help50 能夠找出可能的錯誤(建議用CS50沙盒測試)。另外一個程式錯誤是邏輯錯誤,程式編碼正確,但是卻沒有產出你想要的結果。
cs50x 寫了幾個好用的方法(只能在CS50 IDE使用,無法用沙盒。):
- debug50:模擬電腦的步驟,一步一步檢查
- check50:檢查程式是否能正確運作
- style50:檢查程式的書寫方式是否符合習慣用法
補充:變數範圍 Scope1. 全域變數(Global variable)
2. 區域變數(Local variable):通常是指在主程式或函式裡面設定的變數,只會存在於該主程式或函式裡,當程式結束,變數就會消失。
3. 區塊變數(Block variable):這個通常是指在迴圈裡,在迴圈A命名一個變數為i,另一個迴圈B裡,也命名一個變數為i,兩者之間不會互相干擾。不過迴圈裡的迴圈,還是要取不同名稱。
參考資料: