作業資訊
這個作業屬於哪個課程 | <班級的連結>(如2024-2025-1-計算機基礎與程式設計) |
---|---|
這個作業要求在哪裡 | <作業要求的連結>(如2024-2025-1計算機基礎與程式設計第九周作業) |
這個作業的目標 | <寫上具體方面> 電腦科學概論(第七版)第10,11章 並完成雲班課測試,《C語言程式設計》第8章並完成雲班課測試 |
作業正文 | ... 本部落格連結 |
教材學習內容總結
《電腦科學概論(第七版)》第10、11章內容總結:
第10章 作業系統基礎
- 作業系統的概念與功能:作業系統是管理計算機硬體和軟體資源的程式,是使用者與計算機硬體之間的介面。其主要功能包括資源管理(如CPU、記憶體、外設等)和任務排程。核心功能有程序管理、記憶體管理、檔案系統管理、裝置管理以及使用者介面 。
- 程序管理:程序是程式的一個執行例項,有獨立的記憶體空間和執行狀態,包括執行態、就緒態、阻塞態等。作業系統透過特定的排程演算法決定程序的執行順序,常見排程演算法有先來先服務、短作業優先、優先順序排程、時間片輪轉等.
- 記憶體管理:作業系統負責分配記憶體給程序,常見的記憶體分配方式有連續記憶體分配、分頁系統、分段系統。虛擬記憶體技術可透過硬碟空間模擬出比實體記憶體更大的記憶體空間,讓程式能使用更多記憶體.
- 檔案系統:檔案是資料儲存的基本單位,作業系統管理檔案的建立、刪除、讀取和寫入等操作,並透過目錄結構組織檔案,還可對檔案進行許可權控制,檔案通常儲存在硬碟等外部儲存裝置上.
- 輸入輸出管理:輸入輸出裝置包括鍵盤、滑鼠、顯示器、硬碟等。作業系統透過提供緩衝區和I/O排程演算法,提高資料傳輸效率,減少等待時間.
第11章 資料庫系統
- 資料庫系統概述:資料庫是有組織的資料集合,由資料庫管理系統進行管理,提供高效的資料儲存、查詢、更新和管理功能。資料庫管理系統確保資料的完整性、一致性和安全性.
- 資料模型:主要有層次模型、網狀模型和關係模型。層次模型以樹形結構組織資料;網狀模型以圖形結構組織,更靈活;關係模型以二維表格形式組織,是目前最常用的資料模型,關聯式資料庫管理系統採用此模型.
- 關聯式資料庫:表是基本儲存單位,包含列(屬性)和行(記錄)。主鍵用於唯一標識每條記錄,外來鍵用於建立表之間的聯絡。資料完整性包括實體完整性、參照完整性和域完整性等.
- SQL語言:SQL是用於訪問和運算元據庫的標準語言,包括資料查詢(SELECT)、資料操作(INSERT、UPDATE、DELETE)、資料定義(CREATE、ALTER、DROP)以及資料控制(GRANT、REVOKE)等功能.
- 資料庫設計:實體-關係模型是一種圖形化的資料庫設計工具,用於描述資料庫中的實體及其關係。規範化可消除冗餘資料、避免更新異常,常見的規範化正規化有第一正規化、第二正規化、第三正規化等.
《C語言程式與設計》 指標內容總結
一、指標的基本概念
- 指標變數:指標是一種特殊的變數,其值為記憶體地址。宣告指標變數的一般形式為
資料型別 *指標變數名;
,例如int *p;
表示p
是一個指向int
型別資料的指標變數。 - 取地址運算子
&
:用於獲取變數的記憶體地址。如&a
表示變數a
的地址,可將該地址賦值給指標變數,使指標指向該變數,例如p = &a;
。
二、指標的運算
- 賦值運算:指標可以被賦值為同型別變數的地址、
NULL
(空指標,表示不指向任何有效地址)或其他合法的指標值。例如int *q = NULL;
,q = p;
(p
為已初始化的同型別指標)。 - 算術運算:
- 指標與整數相加或相減:當指標指向陣列元素時,
指標 + n
表示指向當前指標位置往後第n
個同型別元素的地址,指標 - n
則表示往前第n
個元素的地址。移動的位元組數取決於指標所指向的資料型別的大小,例如int
型別指標加 1,則地址增加 4 位元組(假設int
佔 4 位元組)。 - 兩個指標相減:只有當兩個指標指向同一陣列中的元素時,相減才有意義,其結果為兩指標間元素的個數。
- 指標與整數相加或相減:當指標指向陣列元素時,
三、指標與陣列
- 陣列名與指標的關係:在 C 語言中,陣列名在大多數情況下會被隱式轉換為指向陣列首元素的指標。例如
int arr[5];
,arr
等價於&arr[0]
,可以將其賦值給int *
型別的指標變數,如int *p = arr;
。 - 透過指標訪問陣列元素:利用指標可以方便地遍歷陣列。例如
*(p + i)
等價於arr[i]
,透過改變p
的值和迴圈,可以靈活地訪問陣列中的各個元素。
四、指標與函式
- 函式引數傳遞指標:將指標作為函式引數傳遞,可以在函式內部修改呼叫函式中變數的值,實現資料的雙向傳遞。例如:
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
在main
函式中呼叫swap(&x, &y);
,可交換x
和y
的值。
2. 函式返回指標:函式可以返回指標型別的值,但要注意返回的指標不能指向函式內部的區域性變數(除非該區域性變數為static
修飾的靜態變數),否則可能導致錯誤。例如:
int *func() {
static int num = 10;
return #
}
五、指標與字串
在 C 語言中,字串可以用字元陣列表示,也可以用字元指標指向字串常量。例如char *str = "Hello";
,此時str
指向字串常量"Hello"
的首字元。可以透過指標遍歷字串中的字元,但不能修改字串常量的內容。若要修改字串,應使用字元陣列。
六、指標陣列
指標陣列是一個陣列,其元素為指標型別。例如int *arr[5];
表示arr
是一個包含 5 個元素的陣列,每個元素都是int *
型別的指標。指標陣列常用於處理多個字串或指向不同物件的指標集合等情況。
指標在 C 語言程式設計中雖然功能強大,但也容易出錯,如果使用不當可能導致程式崩潰或產生難以除錯的錯誤。因此,在使用指標時需要深入理解其概念和原理,謹慎操作記憶體地址,確保程式的正確性和穩定性。
基於AI的學習
程式碼除錯中的問題和解決過程
問題1:在呼叫函式時,返回值使用return無法輸出正確結果
方法:return只能返回一個變數,當存在多個變數時需要使用指標
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
問題2:輸出變數地址時,會產生隨機數
方法:將變數初始化
int main(){
int a=1;
**int *pa=&a;**
printf("a is %d,&a is %p,pa is %p",a,&a,pa);
}
問題3:使用動態陣列時要注意指標變數記憶體的申請是否成功
方法:使用if語句進行判斷
if(p==NULL);
if(p!=NULL);
問題4:注意釋放記憶體空間
方法:使用free()
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第八週 | 1400/2000 | 1/2 | 20/20 | |
第九周 | 1600/2200 | 1/4 | 18/38 | |
第十週 | 500/1000 | 0/7 | 22/60 | |
第十一週 | 300/1300 | 0/9 | 30/90 |