Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
+11
tinlv_i91c
VoTrungThanh(I92C)
VuThanhLongI92
Nguyen Dinh Mai Huy(I82C)
khanhtram_I83C
TruongQuocLong(i92c)
tranthephuong(i92c)
HaXuanTruong(I92C)
vi_hung_i92
luonghuytai(I92C)
Nguyen_Cao_Tri_(I92C)
15 posters
Trang 1 trong tổng số 1 trang
Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
ĐỀ THI KIỂM TRA GIỮA KỲ
(60 phút, Không được dùng tài liệu)
Câu 1 (1 điểm)
Trình bày mục tiêu, ý nghĩa và cấu trúc môn học “Hệ điều hành”.
Câu 2 (1 điểm)
So sánh chức năng của Long-Term Scheduler với chức năng của Short-Term Scheduler.
Câu 3 (1 điểm)
Phân tích nguyên lý Tập luồng và ứng dụng. Cho ví dụ minh hoạ.
Câu 4 (1 điểm)
Giải thích công việc đoạn mã sau viết bằng Visual C++ 6.0:
Code:
HANDLE ConsumerHandle[100]; DWORD ConsumerID[100];
for(int i=0; i<100; i )
ConsumerHandle[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) Consumer, 0, 4, &ConsumerID[i]);
Câu 5 (1 điểm)
Giải thích chức năng và công việc hàm sau viết bằng Visual C# .NET:
Code:
private void PronounceByVnVoice(string strTCVN3)
{
IntPtr hApp = FindWindow(null, "Speaking VN");
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", "");
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", "");
Clipboard.Clear();
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3));
SendMessage(hApp, WM_COMMAND, 104, 0);
}
Chú ý:
- Điểm Giữa kỳ: 5 đ
- Điểm Diễn đàn: 3 đ
- Điểm Chuyên cần: 2 đ
(Theo Admin)
(60 phút, Không được dùng tài liệu)
Câu 1 (1 điểm)
Trình bày mục tiêu, ý nghĩa và cấu trúc môn học “Hệ điều hành”.
Câu 2 (1 điểm)
So sánh chức năng của Long-Term Scheduler với chức năng của Short-Term Scheduler.
Câu 3 (1 điểm)
Phân tích nguyên lý Tập luồng và ứng dụng. Cho ví dụ minh hoạ.
Câu 4 (1 điểm)
Giải thích công việc đoạn mã sau viết bằng Visual C++ 6.0:
Code:
HANDLE ConsumerHandle[100]; DWORD ConsumerID[100];
for(int i=0; i<100; i )
ConsumerHandle[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) Consumer, 0, 4, &ConsumerID[i]);
Câu 5 (1 điểm)
Giải thích chức năng và công việc hàm sau viết bằng Visual C# .NET:
Code:
private void PronounceByVnVoice(string strTCVN3)
{
IntPtr hApp = FindWindow(null, "Speaking VN");
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", "");
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", "");
Clipboard.Clear();
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3));
SendMessage(hApp, WM_COMMAND, 104, 0);
}
Chú ý:
- Điểm Giữa kỳ: 5 đ
- Điểm Diễn đàn: 3 đ
- Điểm Chuyên cần: 2 đ
(Theo Admin)
Nguyen_Cao_Tri_(I92C)- Tổng số bài gửi : 58
Join date : 21/09/2010
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
ông lấy nguyên xi làm gì ?!! sao không giải thích cho Anh Em hiểu ?!! Thầy kêu xem và làm mà >_<... cái đó anh em mới cần ^^
luonghuytai(I92C)- Tổng số bài gửi : 78
Join date : 13/09/2010
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
xin phép được giải câu 2 và 3:
Câu 2:
long-term scheduler (điều phối chậm): chọn 1 tiến trình từ job queue để đưa sang qua ready queue (chuyển từ New qua Ready). Scheduler lựa chọn kỹ các tiến trình cần nhằm phối hợp cân bằng 2 loại tiến trình:
+ Hướng CPU (CPU-Bound): Tính toán nhiều, Ít I/O.
+ Hướng I/O(I/O-Bound): Tính toán ít, Nhiều I/O.
Mục đích: Cân bằng tải cho toàn hệ thống.
VD: giáo viên chọn 1 sinh viên (trong 100 sv) lên bảng --> GV phải mất nhiều thời gian để lưa chọn -->GV là long-term scheduler--> GV chọn 1 SV lên bảng tức là chọn 1 người vào trạng thái sẵn sàng đề sử dụng CPU
Admin
Ví dụ như vậy sai. Đúng hơn: GV đầu tiên "Sơ tuyển" (Điều phối chậm) một số bạn (đang trong Job Queue), ví dụ 5 bạn được chọn để đưa vào Ready Queue, sau đó mới liên tục gọi 1 trong 5 bạn này lên bảng (Điều phối nhanh).
short-term scheduler (điều phối nhanh): chọn tiến trình sẽ chiếm CPU để xử lý (chuyển từ trạng thái ready sang trạng thái running)
VD: khi SV đã dc chọn thì SV đã biết nhiệm vụ của mình là lên bảng làm bài, ko cần phải suy nghĩ nên làm gì
Câu 3:
Tập luồng (Thread pools)
- khi 1 luồng chính tạo ra tập luồng (tập luồng bao gồm nhiều luồng con sẵn sàng chờ công việc được giao)
- khi tiến trình cha nhận dc yêu cầu công việc, thì 1 luồng dc đánh thức và đưa vào vận hành
- vận hành xong, luồng sẽ dc trả về tập luồng
- Nếu số yêu cầu lớn hơn số tập luồng trong tập, tiến trình cha chờ đến khi có luồng được giải phóng.
VD: tổng đài điện thoại, có nhiều nhân viên (NV) trực điện thoại (NV là các luồng con), số NV nhiều tương ứng với số luồng nhiều, cùng làm việc chung 1 văn phòng (chung 1 bộ nhớ), mỗi NV trực 1 điện thoại (mỗi luồng dc điều khiển 1 CPU), do đó luồng có khả năng đáp ứng cao, khi ko có cuộc gọi--> NV ko làm gì (luồng trong trạng thái ngủ), khi có cuộc gọi đến --> NV bắt cuộc gọi (luồng dc đánh thức và vận hành)--> kết thúc cuộc gọi---> luồng quay về trạng thái ban đầu
Câu 2:
long-term scheduler (điều phối chậm): chọn 1 tiến trình từ job queue để đưa sang qua ready queue (chuyển từ New qua Ready). Scheduler lựa chọn kỹ các tiến trình cần nhằm phối hợp cân bằng 2 loại tiến trình:
+ Hướng CPU (CPU-Bound): Tính toán nhiều, Ít I/O.
+ Hướng I/O(I/O-Bound): Tính toán ít, Nhiều I/O.
Mục đích: Cân bằng tải cho toàn hệ thống.
VD: giáo viên chọn 1 sinh viên (trong 100 sv) lên bảng --> GV phải mất nhiều thời gian để lưa chọn -->GV là long-term scheduler--> GV chọn 1 SV lên bảng tức là chọn 1 người vào trạng thái sẵn sàng đề sử dụng CPU
Admin
Ví dụ như vậy sai. Đúng hơn: GV đầu tiên "Sơ tuyển" (Điều phối chậm) một số bạn (đang trong Job Queue), ví dụ 5 bạn được chọn để đưa vào Ready Queue, sau đó mới liên tục gọi 1 trong 5 bạn này lên bảng (Điều phối nhanh).
short-term scheduler (điều phối nhanh): chọn tiến trình sẽ chiếm CPU để xử lý (chuyển từ trạng thái ready sang trạng thái running)
VD: khi SV đã dc chọn thì SV đã biết nhiệm vụ của mình là lên bảng làm bài, ko cần phải suy nghĩ nên làm gì
Câu 3:
Tập luồng (Thread pools)
- khi 1 luồng chính tạo ra tập luồng (tập luồng bao gồm nhiều luồng con sẵn sàng chờ công việc được giao)
- khi tiến trình cha nhận dc yêu cầu công việc, thì 1 luồng dc đánh thức và đưa vào vận hành
- vận hành xong, luồng sẽ dc trả về tập luồng
- Nếu số yêu cầu lớn hơn số tập luồng trong tập, tiến trình cha chờ đến khi có luồng được giải phóng.
VD: tổng đài điện thoại, có nhiều nhân viên (NV) trực điện thoại (NV là các luồng con), số NV nhiều tương ứng với số luồng nhiều, cùng làm việc chung 1 văn phòng (chung 1 bộ nhớ), mỗi NV trực 1 điện thoại (mỗi luồng dc điều khiển 1 CPU), do đó luồng có khả năng đáp ứng cao, khi ko có cuộc gọi--> NV ko làm gì (luồng trong trạng thái ngủ), khi có cuộc gọi đến --> NV bắt cuộc gọi (luồng dc đánh thức và vận hành)--> kết thúc cuộc gọi---> luồng quay về trạng thái ban đầu
vi_hung_i92- Tổng số bài gửi : 21
Join date : 16/09/2010
Đến từ : Tp.Hồ Chí Minh
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Vậy lớp mình có tính điểm chuyên cần không vậy mấy bạn ???
HaXuanTruong(I92C)- Tổng số bài gửi : 40
Join date : 14/09/2010
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
HaXuanTruong(I92C) đã viết:Vậy lớp mình có tính điểm chuyên cần không vậy mấy bạn ???
cũng đang thắc mắc vấn đề này, không biết thầy tính điểm chuyên cần sao nữa, mình đi học đều lắm hok biết thầy biết hok,hehe
tranthephuong(i92c)- Tổng số bài gửi : 30
Join date : 15/09/2010
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Hình như là ko có chuyên cần. Chỉ có điểm giữa kỳ và điểm diễn đàn thôiHaXuanTruong(I92C) đã viết:Vậy lớp mình có tính điểm chuyên cần không vậy mấy bạn ???
TruongQuocLong(i92c)- Tổng số bài gửi : 13
Join date : 20/09/2010
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Admin
Ví dụ như vậy sai. Đúng hơn: GV đầu tiên "Sơ tuyển" (Điều phối chậm) một số bạn (đang trong Job Queue), ví dụ 5 bạn được chọn để đưa vào Ready Queue, sau đó mới liên tục gọi 1 trong 5 bạn này lên bảng (Điều phối nhanh).
Cám ơn thầy nhắc nhở, vậy em đã hiểu sai vấn đề!!!
Ví dụ như vậy sai. Đúng hơn: GV đầu tiên "Sơ tuyển" (Điều phối chậm) một số bạn (đang trong Job Queue), ví dụ 5 bạn được chọn để đưa vào Ready Queue, sau đó mới liên tục gọi 1 trong 5 bạn này lên bảng (Điều phối nhanh).
Cám ơn thầy nhắc nhở, vậy em đã hiểu sai vấn đề!!!
vi_hung_i92- Tổng số bài gửi : 21
Join date : 16/09/2010
Đến từ : Tp.Hồ Chí Minh
khanhtram_I83C- Tổng số bài gửi : 49
Join date : 10/10/2010
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Chú ý:
- Điểm Giữa kỳ: 5 đ
- Điểm Diễn đàn: 3 đ
- Điểm Chuyên cần: 2 đ
Cám ơn bạn đã post đề thi mẫu bên lớp phan thiết nhé, rất có ích trong kì kiểm tra sắp tới. Hi vọng là thầy sẽ cho mình đủ 2 điểm chuyên cần, môn này mình đi học không vắng buổi nào mà thầy không có điểm danh, ko biết thầy có biết ko nữa. hic
Nguyen Dinh Mai Huy(I82C)- Tổng số bài gửi : 58
Join date : 15/09/2010
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Môn của thầy cũng hay, nên ai cũng đi đầy đủ mà, mình cũng vậy thui
mà chắc thầy không biết đâu. Nên quan trọng học xong lúc thi làm bài sao thui
Admin
- Bạn này khen "khéo" lắm, nhưng thày tin là bạn chân thành. Trong cuộc sống, phải biết nói lên những điều mình nghĩ và cảm nhận.
- Chỉ có đi đều và đúng giờ không đủ ! Có người đi ít, thậm chí không đi vẫn làm bài tốt (tuy tốt hơn nữa nếu đi học đầy đủ).
- Xem kỹ bài thi và số lượng-chất lượng các bài đưa lên Diễn đàn, có thể đánh giá được "Độ chuyên cần".
- Kiểm tra tên tài khoản có đúng "chuẩn" Họ tên (I92C) hay không (ví dụ, Vu Thanh Long (I92C)), đăng ký sớm hay muộn, đưa bài có đều không, cũng phần nào thấy rõ hơn về mức độ chuyên cần của học viên.
mà chắc thầy không biết đâu. Nên quan trọng học xong lúc thi làm bài sao thui
Admin
- Bạn này khen "khéo" lắm, nhưng thày tin là bạn chân thành. Trong cuộc sống, phải biết nói lên những điều mình nghĩ và cảm nhận.
- Chỉ có đi đều và đúng giờ không đủ ! Có người đi ít, thậm chí không đi vẫn làm bài tốt (tuy tốt hơn nữa nếu đi học đầy đủ).
- Xem kỹ bài thi và số lượng-chất lượng các bài đưa lên Diễn đàn, có thể đánh giá được "Độ chuyên cần".
- Kiểm tra tên tài khoản có đúng "chuẩn" Họ tên (I92C) hay không (ví dụ, Vu Thanh Long (I92C)), đăng ký sớm hay muộn, đưa bài có đều không, cũng phần nào thấy rõ hơn về mức độ chuyên cần của học viên.
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Tình hình là kiến thức lập trình chung của cả lớp còn hạn chế trong khi theo yêu cầu của thầy thì đề thi giữa kỳ sẽ có nhiều hơn các câu lập trình. Hôm nay sau khi ôn lại kiến thức mình thử giải thích đoạn code thầy cho trong thi giữa kỳ ĐH phan thiết như sau :
Câu 4 (1 điểm)
Giải thích công việc đoạn mã sau viết bằng Visual C++ 6.0:
Code:
HANDLE ConsumerHandle[100]; DWORD ConsumerID[100];
for(int i=0; i<100; i )
ConsumerHandle[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) Consumer, 0, 4, &ConsumerID[i]);
Giải :
HANDLE ConsumerHandle[100]; // tạo ra mảng 100 phần tử chứa mục quản nhà tiêu thụ
DWORD ConsumerID[100]; // tạo ra mảng 100 phần tử chứa id nhà tiêu thụ , id đây được hiểu như chứng minh thư xác định duy nhất một nhà sản xuất
for(int i=0; i<100; i )
ConsumerHandle[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) Consumer, 0, 4, &ConsumerID[i]);
//Chạy một vòng lặp for tạo ra 100 nhà tiêu thụ, ngay khi mới tạo các nhà tiêu thụ này ở trạng thái ngủ và chờ được đánh thức (để đánh thức ta sử dụng hàm ResumeThread(ConsumerHandle[i]) ; i ở đây là nhà tiêu thụ thứ i được đánh thức và i nằm trong khoảng từ 0 đến 99)
Câu 5 (1 điểm)
Giải thích chức năng và công việc hàm sau viết bằng Visual C# .NET:
Code:
private void PronounceByVnVoice(string strTCVN3)
{
IntPtr hApp = FindWindow(null, "Speaking VN");
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", "");
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", "");
Clipboard.Clear();
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3));
SendMessage(hApp, WM_COMMAND, 104, 0);
}
Giải:
private void PronounceByVnVoice(string strTCVN3) // Đây là một hàm con không có giá trị trả về, và không được kế thừa hay dùng chung (nghĩa là đây là hàm con chỉ dùng cho lớp khởi tạo nó) và hàm này được truyền một biến chuỗi được gõ dưới dạng TCVN3
{
IntPtr hApp = FindWindow(null, "Speaking VN"); //Tìm cửa sổ có tiêu đề là Speaking VN rồi gán cho biến hApp (cửa sổ chính của chương trình)
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", ""); //Tìm cửa sổ mở rộng của cửa sổ cha với lớp của cửa sổ là AfxFrameOrView42s và tiêu đề của sổ là ""
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", ""); // Tiếp tục tìm cửa sổ mở rộng của cửa sổ cha với lớp của cửa sổ là RICHEDIT và tiêu đề của cửa sổ là ""
Clipboard.Clear(); // xóa hết dữ liệu trong Clipboard để tránh trường hợp có người đã sử dụng để đọc đoạn văn bản trước đó --- nhằm đảm bảo chương trình chỉ có đoạn văn bản được truyền vào strTCVN3
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3)); // gửi đoạn văn bản strTCVN3 đã được chuyển sang kiểu Marshal đến cửa sổ RICHEDIT
SendMessage(hApp, WM_COMMAND, 104, 0); // gửi bản tin đến cửa sổ chính của chương trình speakingVN và kích hoạt nút có số ID là 104 tương ứng với nút đọc văn bản vừa truyền vào --- chú ý chúng ta sử dụng spy++ của vb để xác định số ID
}
Trên đây là bài giải của em, mong thầy và các bạn góp ý để em có thể hoàn thiện hơn.
Cảm ơn thầy và các bạn.
Admin
- Giải tốt. Mọi thứ chỉ đơn giản như vậy thôi.
- Giá trị trả về của FindWindow() và FindWindowEx() là Mục quản (Handle) của cửa sổ tìm được.
- Phải nói: FindWindowEx() tìm mở rộng cửa sổ (tìm tiếp), tìm cửa sổ con của cửa sổ với mục quản cho trước (qua tham số thứ nhất).
- SendMessage(hApp, WM_COMMAND, 104, 0) không phải "gửi bản tin" mà là gửi thông điệp lệnh (WM_COMMAND) cho đối tượng với ID bằng 104 để "nhấn chuột" từ xa vào mục thực đơn "Clipboard" tương ứng của cửa sổ có mục quản nằm trong biến hApp.
- Số 104 không xác định được qua Spy++ mà bằng cách lập trình như bài tập đã ra (có 1 bạn đã làm được với mục "Stop speaking" nhưng không cho biết cách làm).
Câu 4 (1 điểm)
Giải thích công việc đoạn mã sau viết bằng Visual C++ 6.0:
Code:
HANDLE ConsumerHandle[100]; DWORD ConsumerID[100];
for(int i=0; i<100; i )
ConsumerHandle[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) Consumer, 0, 4, &ConsumerID[i]);
Giải :
HANDLE ConsumerHandle[100]; // tạo ra mảng 100 phần tử chứa mục quản nhà tiêu thụ
DWORD ConsumerID[100]; // tạo ra mảng 100 phần tử chứa id nhà tiêu thụ , id đây được hiểu như chứng minh thư xác định duy nhất một nhà sản xuất
for(int i=0; i<100; i )
ConsumerHandle[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) Consumer, 0, 4, &ConsumerID[i]);
//Chạy một vòng lặp for tạo ra 100 nhà tiêu thụ, ngay khi mới tạo các nhà tiêu thụ này ở trạng thái ngủ và chờ được đánh thức (để đánh thức ta sử dụng hàm ResumeThread(ConsumerHandle[i]) ; i ở đây là nhà tiêu thụ thứ i được đánh thức và i nằm trong khoảng từ 0 đến 99)
Câu 5 (1 điểm)
Giải thích chức năng và công việc hàm sau viết bằng Visual C# .NET:
Code:
private void PronounceByVnVoice(string strTCVN3)
{
IntPtr hApp = FindWindow(null, "Speaking VN");
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", "");
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", "");
Clipboard.Clear();
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3));
SendMessage(hApp, WM_COMMAND, 104, 0);
}
Giải:
private void PronounceByVnVoice(string strTCVN3) // Đây là một hàm con không có giá trị trả về, và không được kế thừa hay dùng chung (nghĩa là đây là hàm con chỉ dùng cho lớp khởi tạo nó) và hàm này được truyền một biến chuỗi được gõ dưới dạng TCVN3
{
IntPtr hApp = FindWindow(null, "Speaking VN"); //Tìm cửa sổ có tiêu đề là Speaking VN rồi gán cho biến hApp (cửa sổ chính của chương trình)
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", ""); //Tìm cửa sổ mở rộng của cửa sổ cha với lớp của cửa sổ là AfxFrameOrView42s và tiêu đề của sổ là ""
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", ""); // Tiếp tục tìm cửa sổ mở rộng của cửa sổ cha với lớp của cửa sổ là RICHEDIT và tiêu đề của cửa sổ là ""
Clipboard.Clear(); // xóa hết dữ liệu trong Clipboard để tránh trường hợp có người đã sử dụng để đọc đoạn văn bản trước đó --- nhằm đảm bảo chương trình chỉ có đoạn văn bản được truyền vào strTCVN3
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3)); // gửi đoạn văn bản strTCVN3 đã được chuyển sang kiểu Marshal đến cửa sổ RICHEDIT
SendMessage(hApp, WM_COMMAND, 104, 0); // gửi bản tin đến cửa sổ chính của chương trình speakingVN và kích hoạt nút có số ID là 104 tương ứng với nút đọc văn bản vừa truyền vào --- chú ý chúng ta sử dụng spy++ của vb để xác định số ID
}
Trên đây là bài giải của em, mong thầy và các bạn góp ý để em có thể hoàn thiện hơn.
Cảm ơn thầy và các bạn.
Admin
- Giải tốt. Mọi thứ chỉ đơn giản như vậy thôi.
- Giá trị trả về của FindWindow() và FindWindowEx() là Mục quản (Handle) của cửa sổ tìm được.
- Phải nói: FindWindowEx() tìm mở rộng cửa sổ (tìm tiếp), tìm cửa sổ con của cửa sổ với mục quản cho trước (qua tham số thứ nhất).
- SendMessage(hApp, WM_COMMAND, 104, 0) không phải "gửi bản tin" mà là gửi thông điệp lệnh (WM_COMMAND) cho đối tượng với ID bằng 104 để "nhấn chuột" từ xa vào mục thực đơn "Clipboard" tương ứng của cửa sổ có mục quản nằm trong biến hApp.
- Số 104 không xác định được qua Spy++ mà bằng cách lập trình như bài tập đã ra (có 1 bạn đã làm được với mục "Stop speaking" nhưng không cho biết cách làm).
VoTrungThanh(I92C)- Tổng số bài gửi : 13
Join date : 15/09/2010
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
VuThanhLongI92 đã viết:Môn của thầy cũng hay, nên ai cũng đi đầy đủ mà, mình cũng vậy thui
mà chắc thầy không biết đâu. Nên quan trọng học xong lúc thi làm bài sao thui
Admin
- Bạn này khen "khéo" lắm, nhưng thày tin là bạn chân thành. Trong cuộc sống, phải biết nói lên những điều mình nghĩ và cảm nhận.
- Chỉ có đi đều và đúng giờ không đủ ! Có người đi ít, thậm chí không đi vẫn làm bài tốt (tuy tốt hơn nữa nếu đi học đầy đủ).
- Xem kỹ bài thi và số lượng-chất lượng các bài đưa lên Diễn đàn, có thể đánh giá được "Độ chuyên cần".
- Kiểm tra tên tài khoản có đúng "chuẩn" Họ tên (I92C) hay không (ví dụ, Vu Thanh Long (I92C)), đăng ký sớm hay muộn, đưa bài có đều không, cũng phần nào cho thấy rõ hơn về mức độ chuyên cần của học viên.
Thưa thầy, cái vụ tên đăng nhập diễn đàn là em đăng ký ngay sau buổi đầu tiên học môn thầy, sau đó em đã post bài nên không dám đăng ký thêm nick khác (cho đúng chuẩn ) vì sợ thành "spammer". Bài viết thì em thỉnh thoảng vẫn post lên, nhưng chủ yếu là em đọc bài các bạn rùi sau đó nhận xét cái đúng, cái sai, cái hay... chứ em không dám post nhiều mấy bài copy từ trên internet, em thấy nó spam quá
Nhân tiện cũng cho em đóng góp thêm ý kiến nhỏ là: giống như box "Thông báo chuyên môn", thầy nên tạo 1 box tương tự (ví dụ tên là "Chia sẻ kinh nghiệm" hay gì đó ...) để các bạn trong diễn đàn post các bài viết sưu tầm trên internet vào đây. Làm như vậy khi vào diễn đàn sẽ dễ tìm bài hơn, ví dụ mấy hôm nay em muốn vào diễn đàn coi mấy bài các bạn post thảo luận về thi giữa kỳ mà tìm mãi mới ra, chỉ vì có quá nhiều bài được post lên với mục đích chia sẻ kinh nghiệm (được sưu tầm từ internet)
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Ban VoTrungThanh(I92C)" rat sieng nang va dong gop nhieu bai cho dien dan, bai viet cua ban minh thay cung rat tot, ban can phat huy nhieu nua nhe! Hi vong cac bai viet cua ban se giup cho minh va 1 so ban khac co duoc 1 so bai tham khao tot hon.
Thanks,
Thanks,
VoTrungThanh(I92C) đã viết:Tình hình là kiến thức lập trình chung của cả lớp còn hạn chế trong khi theo yêu cầu của thầy thì đề thi giữa kỳ sẽ có nhiều hơn các câu lập trình. Hôm nay sau khi ôn lại kiến thức mình thử giải thích đoạn code thầy cho trong thi giữa kỳ ĐH phan thiết như sau :
Câu 4 (1 điểm)
Giải thích công việc đoạn mã sau viết bằng Visual C++ 6.0:
Code:
HANDLE ConsumerHandle[100]; DWORD ConsumerID[100];
for(int i=0; i<100; i )
ConsumerHandle[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) Consumer, 0, 4, &ConsumerID[i]);
Giải :
HANDLE ConsumerHandle[100]; // tạo ra mảng 100 phần tử chứa mục quản nhà tiêu thụ
DWORD ConsumerID[100]; // tạo ra mảng 100 phần tử chứa id nhà tiêu thụ , id đây được hiểu như chứng minh thư xác định duy nhất một nhà sản xuất
for(int i=0; i<100; i )
ConsumerHandle[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) Consumer, 0, 4, &ConsumerID[i]);
//Chạy một vòng lặp for tạo ra 100 nhà tiêu thụ, ngay khi mới tạo các nhà tiêu thụ này ở trạng thái ngủ và chờ được đánh thức (để đánh thức ta sử dụng hàm ResumeThread(ConsumerHandle[i]) ; i ở đây là nhà tiêu thụ thứ i được đánh thức và i nằm trong khoảng từ 0 đến 99)
Câu 5 (1 điểm)
Giải thích chức năng và công việc hàm sau viết bằng Visual C# .NET:
Code:
private void PronounceByVnVoice(string strTCVN3)
{
IntPtr hApp = FindWindow(null, "Speaking VN");
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", "");
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", "");
Clipboard.Clear();
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3));
SendMessage(hApp, WM_COMMAND, 104, 0);
}
Giải:
private void PronounceByVnVoice(string strTCVN3) // Đây là một hàm con không có giá trị trả về, và không được kế thừa hay dùng chung (nghĩa là đây là hàm con chỉ dùng cho lớp khởi tạo nó) và hàm này được truyền một biến chuỗi được gõ dưới dạng TCVN3
{
IntPtr hApp = FindWindow(null, "Speaking VN"); //Tìm cửa sổ có tiêu đề là Speaking VN rồi gán cho biến hApp (cửa sổ chính của chương trình)
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", ""); //Tìm cửa sổ mở rộng của cửa sổ cha với lớp của cửa sổ là AfxFrameOrView42s và tiêu đề của sổ là ""
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", ""); // Tiếp tục tìm cửa sổ mở rộng của cửa sổ cha với lớp của cửa sổ là RICHEDIT và tiêu đề của cửa sổ là ""
Clipboard.Clear(); // xóa hết dữ liệu trong Clipboard để tránh trường hợp có người đã sử dụng để đọc đoạn văn bản trước đó --- nhằm đảm bảo chương trình chỉ có đoạn văn bản được truyền vào strTCVN3
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3)); // gửi đoạn văn bản strTCVN3 đã được chuyển sang kiểu Marshal đến cửa sổ RICHEDIT
SendMessage(hApp, WM_COMMAND, 104, 0); // gửi bản tin đến cửa sổ chính của chương trình speakingVN và kích hoạt nút có số ID là 104 tương ứng với nút đọc văn bản vừa truyền vào --- chú ý chúng ta sử dụng spy++ của vb để xác định số ID
}
Trên đây là bài giải của em, mong thầy và các bạn góp ý để em có thể hoàn thiện hơn.
Cảm ơn thầy và các bạn.
Admin
- Giải tốt. Mọi thứ chỉ đơn giản như vậy thôi.
- Giá trị trả về của FindWindow() và FindWindowEx() là Mục quản (Handle) của cửa sổ tìm được.
- Phải nói: FindWindowEx() tìm mở rộng cửa sổ (tìm tiếp), tìm cửa sổ con của cửa sổ với mục quản cho trước (qua tham số thứ nhất).
- SendMessage(hApp, WM_COMMAND, 104, 0) không phải "gửi bản tin" mà là gửi thông điệp lệnh (WM_COMMAND) cho đối tượng với ID bằng 104 để "nhấn chuột" từ xa vào mục thực đơn "Clipboard" tương ứng của cửa sổ có mục quản nằm trong biến hApp.
- Số 104 không xác định được qua Spy++ mà bằng cách lập trình như bài tập đã ra (có 1 bạn đã làm được với mục "Stop speaking" nhưng không cho biết cách làm).
tinlv_i91c- Tổng số bài gửi : 39
Join date : 09/04/2010
Đến từ : Quang Ngai
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Thì thầy đã nói là các bạn nên tham khảo thêm nội dung thảo luận ở các diễn đàn khác nữa mà:
https://hedieuhanh.forumvi.com/forum.htm
https://hedieuhanh.forumvi.com/forum.htm
hoainam_I83C- Tổng số bài gửi : 40
Join date : 03/12/2009
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Cảm ơn bạn rất nhiều
Các bạn vào đây tải đề thi HĐH lần 2 của khóa I91C
https://2img.net/h/i348.photobucket.com/albums/q358/dauchiminhem/IMG_1839.jpg
Các bạn vào đây tải đề thi HĐH lần 2 của khóa I91C
https://2img.net/h/i348.photobucket.com/albums/q358/dauchiminhem/IMG_1839.jpg
nguyenvandung(i91C)- Tổng số bài gửi : 43
Join date : 06/05/2010
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Câu 1 (1 điểm)Nguyen_Cao_Tri_(I92C) đã viết:ĐỀ THI KIỂM TRA GIỮA KỲ
(60 phút, Không được dùng tài liệu)
Câu 1 (1 điểm)
Trình bày mục tiêu, ý nghĩa và cấu trúc môn học “Hệ điều hành”.
Câu 2 (1 điểm)
So sánh chức năng của Long-Term Scheduler với chức năng của Short-Term Scheduler.
Câu 3 (1 điểm)
Phân tích nguyên lý Tập luồng và ứng dụng. Cho ví dụ minh hoạ.
Câu 4 (1 điểm)
Giải thích công việc đoạn mã sau viết bằng Visual C++ 6.0:
Code:
HANDLE ConsumerHandle[100]; DWORD ConsumerID[100];
for(int i=0; i<100; i )
ConsumerHandle[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) Consumer, 0, 4, &ConsumerID[i]);
Câu 5 (1 điểm)
Giải thích chức năng và công việc hàm sau viết bằng Visual C# .NET:
Code:
private void PronounceByVnVoice(string strTCVN3)
{
IntPtr hApp = FindWindow(null, "Speaking VN");
IntPtr hFrame = FindWindowEx(hApp, IntPtr.Zero, "AfxFrameOrView42s", "");
IntPtr hRichEditBox = FindWindowEx(hFrame, IntPtr.Zero, "RICHEDIT", "");
Clipboard.Clear();
SendMessageW(hRichEditBox, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalUni(strTCVN3));
SendMessage(hApp, WM_COMMAND, 104, 0);
}
Chú ý:
- Điểm Giữa kỳ: 5 đ
- Điểm Diễn đàn: 3 đ
- Điểm Chuyên cần: 2 đ
(Theo Admin)
Trình bày mục tiêu, ý nghĩa và cấu trúc môn học “Hệ điều hành”.
--> mình nghĩ là bạn nào cũng trả lời được câu này vì trong tài liệu Thầy đưa, chỉ vỏn vẹn mấy gạch đầu dòng, cụ thể là :
- Hiểu sâu nguyên lý hoạt động của phần cứng và phần mềm máy tính.
- Học phương pháp phân tích, thiết kế và lập trình một hệ thống lớn để áp dụng cho công tác nghiệp vụ sau này.
b) Mục tiêu
- Cung cấp các khái niệm cơ bản về cấu trúc và hoạt động của máy tính và hệ điều hành
--> nhưng chỉ làm vậy thôi thì chưa đạt yêu cầu của Thầy. Và để minh họa, tôi trình bày một suy nghĩ mà tôi cảm thấy “tâm đắc” kể từ khi tôi nghĩ ra nó hihi … mong được đón nhận nồng nhiệt Ví dụ về việc thăm và khắc phục lỗi hệ thống cho Công ty mạng Phương Nam, Thầy nhấn mạnh 1 câu “Lưu ý rằng, thày chưa gặp tình huống này bao giờ. Kết quả trên hoàn toàn nhờ Suy luận và Phán đoán do có kiến thức về Hệ điều hành.” --> học HĐH không hẳn là để tạo ra nó mà có thể chỉ là để hiểu và để giải quyết vấn đề. Ai thấy mình nói đúng thì vote cho 1 phiếu nha . Thankiu
NGUYENPHUONGTHAO[I92C]- Tổng số bài gửi : 43
Join date : 14/09/2010
Re: Thi kiểm tra giữa kỳ 31-10-2010 - PHAN THIẾT (Tham Khảo)
Đề thì ko khó. Trong lúc hoc có hết. Quan trọng là có siêng học bài hay ko . Hix
TruongHuuHien(I92C)- Tổng số bài gửi : 76
Join date : 13/09/2010
Age : 36
Đến từ : HCM City
Similar topics
» Tài Liệu Tham Khảo Phân Tích Thiết Kế Hệ Thống Quản Lý Thư Viện
» hôm nay mình sẽ gửi cho một phần quan trọng tham khảo ôn tập thi giữa kỳ nè
» trang web tìm kiếm, tham khảo code
» Thi kiểm tra giữa kỳ 31-10-2010
» hôm nay mình sẽ gửi bài tham khảo ôn tập trọng tâm thi giữa kỳ
» hôm nay mình sẽ gửi cho một phần quan trọng tham khảo ôn tập thi giữa kỳ nè
» trang web tìm kiếm, tham khảo code
» Thi kiểm tra giữa kỳ 31-10-2010
» hôm nay mình sẽ gửi bài tham khảo ôn tập trọng tâm thi giữa kỳ
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết