〖學習筆記〗cs50 — week2 : Array

Shih Ting, Tai
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,兩者之間不會互相干擾。不過迴圈裡的迴圈,還是要取不同名稱。

參考資料:

--

--

Shih Ting, Tai

Enhance overall happiness by improving human-computer interaction to benefit people.