Máy tính hỗ trợ cho người thầy một số công đoạn trong quá trình dạy học: Vai trò này của máy tính được sử dụng trong các ngành kỹ thuật từ khi máy tính ra đời.. Máy tính hỗ trợ thí nghiệ[r]
Trang 1CHƯƠNG 1 : TIN HỌC VÀ GIÁO DỤC
A ĐƯA TIN HỌC VÀO TRƯỜNG PHỔ THÔNG
I Sự phát triển có tính chất bùng nổ của tin học
II Tác động của công nghệ tin học đến trường học
III Nhu cầu và hoàn cảnh của nhà trường phổ thông Việt Nam
B SỬ DỤNG MÁY TÍNH ĐIỆN TỬ NHƯ CÔNG CỤ DẠY HỌC
I Sử dụng máy tính điện tử như công cụ dạy học
II Phát triển tư duy thuật toán cho học sinh
A ÐƯA TIN HỌC VÀO TRƯỜNG PHỔ THÔNG
I Sự phát triển có tính chất bùng nổ của tin học TOP
Quan niệm cũ: Xem tin học như là một bộ phận của toán học
Quan niệm mới: Cho rằng nếu chỉ xem tin học như là một bộ phận của toán học thì sẽ kìm hãm sựphát triển của tin học Ngày nay tin học đã trở thành một ngành khoa học độc lập với nhiều ngành khoahọc liên quan và có đối tượng nghiên cứu riêng như công nghệ phần mềm, tin học lý thuyết, cơ sở dữliệu
Giai đoạn mới trong sự phát triển về chất của tin học bắt đầu vào những năm 70, với sự phát minh
ra kỹ thuật vi xử lý đã tạo cơ sở cho việc chế tạo ra những thế hệ máy tính mới ngày càng gọn nhẹ, tốc độ
xử lý nhanh, độ tin cậy cao, điều khiển đơn giản hơn, Về phần mềm các ngôn ngữ lập trình cũng tiếngần đến những ngôn ngữ thông thường Nhờ vậy máy tính điện tử đã nhanh chóng thâm nhập vào mọi lĩnhvực sản xuất, kinh tế và đời sống xã hội Tin học cung cấp cho con người những công cụ khai thác và xử
lý thông tin một cách nhanh chóng và hiệu quả
Ngày nay tin học đã được ứng dụng rộng rãi trong mọi lĩnh vực từ các ngành khoa học chính xác,khoa học cơ bản đến điều khiển tự động, thông tin liên lạc, Ðặc biệt tin học được sử dụng nhiều trongcông tác quản lý như quản lý sản xuất, quản lý con người, quản lý tài nguyên, Tin học được xem là mộttrong những ngành mũi nhọn, chiếm vị trí hàng đầu trong chính sách kinh tế và khoa học kỹ thuật của cácnước phát triển
II Tác động của công nghệ tin học đến trường học: TOP
Sự nghiệp giáo dục phải đáp ứng những đòi hỏi của khoa học kỹ thuật Ðó là yêu cầu có tính chấtnguyên tắc Trong thời đại ngày nay máy tính điện tử ngày càng được sử dụng rộng rãi, một sự hiểu biếtnhất định về máy tính điện tử phải trở thành học vấn phổ thông của mọi thành viên trong xã hội Nếu như
sự phát triển mạnh mẽ và ứng dụng rộng rãi của tin học là một đặc điểm nổi bật của cuộc cách mạng khoahọc công nghệ của thế kỷ này, nếu chúng ta đòi hỏi việc đào tạo của nhà trường phải gắn liền với thực tế
xã hội thì không thể thoái thác việc đưa tin học vào trường phổ thông Việc làm này sẽ đón đầu với yêucầu của thực tiễn trong kỹ nguyên thông tin và tự động hóa
Có 2 xu hướng chính trong việc đưa tin học vào trường phổ thông:
Ðưa tin học vào chương trình giảng dạy, xem tin học như một môn học tương tựnhư các môn học khác
Sử dụng máy tính như một công cụ dạy học
Trang 2Ðối với học sinh phổ thông có thể hướng dẫn các em dùng máy tính như một công cụ để học cácmôn khác nhau như toán, ngoại ngữ, Ở bậc học cao hơn như đại học có thể dùng máy tính để mô phỏngcác bài thí nghiệm, đánh giá chất lượng học sinh
III Nhu cầu và hoàn cảnh của nhà trường phổ thông Việt Nam: TOP
1 Nhu cầu xã hội:
Xã hội ngày nay xuất hiện nhiều ngành nghề đòi hỏi phải có hiểu biết về tin học
Giáo dục tin học ở trường phổ thông nhằm chuẩn bị cho thế hệ trẻ Việt Nam về mặt tri thứccũng như kỹ năng hoạt động, sử dụng trang thiết bị hiện đại Phát triển về mặt năng lực, trí tuệ để nhanhchóng thích ứng với thời đại mới
2 Khả năng thực hiện:
Nhiều trường phổ thông đã được trang bị máy tính để giảng dạy cho học sinh
Đối với các trường chưa đủ điều kiện trang bị máy tính phục vụ cho nhu cầu học tập củahọc sinh chúng ta vẫn có thể dạy nhiều yếu tố liên quan đến văn hóa tin học như thuật toán, phát triển tưduy thuật toán, kích thích tính sáng tạo của học sinh
3 Quan điểm "Phân hóa" trong việc đưa tin học vào nội dung dạy học:
Xã hội hiện nay và trong tương lai cần rất nhiều các tri thức tin học và những người nắmvững các tri thức ấy Tuy nhiên, không phải mọi người khi ra đời đều trở thành các cán bộ hoạt động tinhọc Mặt khác, chúng ta cũng không thể để họ "bị mù" về tin học Vì vậy, việc đưa tin học vào nội dungdạy học ở trường phổ thông tùy theo điều kiện trang thiết bị và cả con người chúng ta có thể phân làm 2diện:
Diện phổ cập: Cung cấp cho học sinh phổ thông một nền kiến thức cơ bản về tinhọc, chẳng hạn như khái niệm thuật giải, tư duy thuật giải, cấu trúc và nguyên tắc làm việc của máy tính,
Diện mũi nhọn: Tập trung các học sinh có năng khiếu về tin học, dạy cho các emnhiều kiến thức về tin học Tạo điều kiện để các em có thể trở thành các cán bộ hoạt động chuyên sâu vềtin học hay trở thành các chuyên gia tin học sau này
4 Nội dung, mục đích, con đường đưa giáo dục tin học vào nhà trường Việt Nam:
Nội dung: Giáo dục tin học được xét ở 3 phương diện:
Truyền thụ các kiến thức tin học như nội dung của một môn học bình đẳng như cácmôn học khác trong chương trình giảng dạy
Giáo dục tin học thông qua nội dung của các môn học khác
Sử dụng máy tính điện tử như một công cụ để dạy học
Mục đích:
Giáo dục tin học ở trường phổ thông là nhằm chuẩn bị cho thế hệ trẻ Việt Nam vềmặt tri thức, kỷ năng, về mặt năng lực, trí tuệ và các phẩm chất cần thiết giúp học sinh thích ứng với thờiđại vi tính hóa
Về mặt tri thức kỷ năng: Giúp cho học sinh sau khi tốt nghiệp nắm được một số yếu
tố cơ bản của tin học Trong đó có một số em (diện đào tạo mũi nhọn) có khả năng sử dụng máy tính để
xử lý thông tin, dùng máy tính như một công cụ phục vụ cho việc học tập và hoạt động
Về mặt năng lực, trí tuệ: Giúp phát triển nhiều phương thức, tư duy liên hệ mật thiếtvới việc sử dụng kỹ thuật xử lý thông tin như: tư duy thuật toán, tư duy điều khiển, tư duy ngôn ngữ, Ðồng thời hình thành và phát triển năng lực hoạt động trí tuệ nói chung như phân tích, tổng hợp, khái quáthóa, trừu tượng hóa,
Con đường đưa giáo dục tin học vào nhà trường: Giáo dục tin học có thể đưa vào nhàtrường theo 2 con đường:
Truyền thụ một số yếu tố tin học như một môn học hay nói cách khác là đưa tin học vào nhà trường bình đẳng như các môn học truyền thống khác
Giáo dục tin học thông qua nội dung của các môn học khác nhau, sử dụng các hìnhthức nội khóa, ngoại khóa,
B SỬ DỤNG MÁY TÍNH ÐIỆN TỬ NHƯ CÔNG CỤ DẠY HỌC
Trang 3I Sử dụng máy tính điện tử như công cụ dạy học: TOP Với tư cách là một tiến bộ của khoa học và công nghệ máy tính cũng có thể sử dụng trong quá trình
dạy học để cải tiến phương pháp giảng dạy nhằm nâng cao chất lượng giáo dục Nhiều ý tưởng đã đượcđưa ra cho mục tiêu này, tựu chung có 3 hướng chính:
1 Máy tính có thể thay thế người giáo viên một cách hoàn toàn trong dạy học:
Về mặt lý luận xu hướng này bị nhiều người phê phán là kiểu dạy học phi nhân tính Ngoài nhiệm
vụ truyền đạt kiến thức, nhiệm vụ giáo dưỡng của người thầy cùng đóng vai trò vô cùng quan trọng trongquá trình hình thành nhân cách của học sinh
Tuy nhiên, về mặt lý luận dạy học có thể thiết kế những chương trình có nội dung phongphú, không nhàm chán, tiện sử dụng nhằm "kéo dài giờ học" của học sinh Nếu máy tính đã về đến giađình thì thầy giáo có thể giới thiệu một số chương trình để các em tự học, tự nghiên cứu, củng cố kiếnthức đã học ở trường Ngoài ra các em còn có thể sử dụng máy tính cùng các chương trình có sẳn để họcngoại ngữ hay tìm hiểu thêm những kiến thức mà nhà trường chưa trang bị cho mình
2 Máy tính hỗ trợ cho người thầy một số công đoạn trong quá trình dạy học: Vai trò này của máytính được sử dụng trong các ngành kỹ thuật từ khi máy tính ra đời
Máy tính hỗ trợ thí nghiệm:
Gián tiếp: Lấy số liệu từ thí nghiệm, nhập vào máy tính để có kết quả
Trực tiếp: Nối các thí nghiệm với máy tính thông qua các sensor (bộ cảm biến), cácsensor có nhiệm vụ chuyển các số liệu thu được từ thí nghiệm thành các tín hiệu thích hợp đưa vào máytính để xử lý và cho ra kết quả Ưu điểm của phương pháp này là nhanh và chính xác Khuyết điểm là đốivới mỗi thí nghiệm cần phải có một bộ thu phát sensor riêng Ðặc biệt là đứng về mặt sư phạm máy tính
đã thay thế các hoạt động cần thiết cho kỹ năng thực hành của học sinh Người học không được rèn luyệncác thao tác thực hành cũng như tính toán Tuy nhiên, xu hướng trên vẫn đang phát triển nhất là ở cáctrường đại học
Máy tính hổ trợ cho việc kiểm tra và đánh giá chất lượng học sinh:
Ngoài chức năng lưu trữ, truy xuất và xử lý điểm học tập của học sinh Máy tínhcòn giúp người giáo viên tổ chức cho học sinh thi trắc nghiệm một cách nhanh chóng, chính xác và antoàn Việc thi trắc nghiệm sẽ được chia làm 2 công đoạn:
+ Soạn các câu hỏi trắc nghiệm và thông qua một số lần "trắc nghiệm thử",máy sẽ cho phép ta chọn lựa các câu hỏi "hay" để lập và bổ sung vào ngân hàng đề thi
+ Bước kế tiếp là dùng máy tính để chọn các câu hỏi thi trắc nghiệm trongngân hàng câu hỏi và cũng dùng máy tính để xử lý điểm cho học sinh sau khi thi xong
3 Thầy giáo sử dụng máy tính như một phương tiện hỗ trợ cho việc dạy học trên lớp:
Sử dụng màn hình máy tính để mô phỏng các hiện tượng tự nhiên, các thí nghiệm, các hìnhảnh cũng như các cấu trúc, là việc làm mang ý nghĩa dạy học rõ rệt Có 2 trường phái ủng hộ và khôngủng hộ ý tưởng này
Những người ủng hộ thì cho rằng việc mô phỏng là không trung thực với sự việc và
sự vật Nếu mô phỏng thí nghiệm thì mọi hình ảnh xảy ra trên màn hình đều đã được tính trước, khôngthuyết phục học sinh
Những người ủng hộ thì cho rằng trực quan hóa là mục đích chính, nó nhằm giảiquyết giai đoạn ban đầu của quá trình nhận thức Nếu ta biểu diễn một thí nghiệm trên máy tính có thểkhông thuyết phục về mặt định lượng song học sinh có thể thấy được thí nghiệm đó diễn ra như thế nào,bản chất hiện tượng ra sao Nếu sử dụng triệt để ta có thể biến màn hình máy tính thành một công cụ trựcquan đa năng giúp cho học sinh nhận thức được bản chất của nhiều vấn đề có thể mang tính trừu tượngcao
II Phát triển tư duy thuật toán cho học sinh TOP
1 Làm thế nào để phát triển tư duy thuật toán cho học sinh:
Ðây là vấn đề đặc biệt quan trọng trong dạy học hiện nay
Trang 4Trong dạy học người ta luôn luôn tìm kiếm nhiều phương pháp để phát triển tư duy chohọc sinh Ở từng giai đoạn nội dung phát triển tư duy có khác nhau Nó phụ thuộc vào trình độ khoa học
kỹ thuật, quan điểm triết học Chúng ta đã từng quen thuộc với các khái niệm về tư duy trừu tượng, tư duylogic, tư duy biện chứng
Vào thời cổ đại, tư duy của con người gần như là tư duy cụ thể, toán học thời bấy giờ chỉ làcác khái niệm thực nghiệm, trong giai đoạn này chưa có khái niệm về tư duy logic Về sau toán học pháttriển cao hơn, con người không những biết thành lập những mệnh đề toán học mà còn biết chứng minhtính đúng đắn của nó, tư duy logic xuất hiện Vào thời đại ngày nay bước sang giai đoạn tự động hóa, máy
vi tính trở thành công cụ đắc lực cho mọi hoạt động Ðể nắm vững tin học nhằm hòa nhập tích cực vàocuộc sống con người cần có tư duy thuật toán
2 Sự liên hệ giữa tư duy thuật toán và tư duy sáng tạo:
Sự liên hệ giữa tư duy thuật toán và tư duy sáng tạo có nhiều quan điểm trái ngược nhau
Có quan điểm cho rằng dạy thuật toán cho học sinh là làm cho học sinh hoạt động máy móc, rập khuôn,thiếu linh hoạt nhưng chúng ta cần xem xét vấn đề trên trên nhiều góc độ khác nhau
Tư duy thuật toán là tiền đề chuẩn bị cho sự sáng tạo.Trước khi có sự sáng tạo người ta cầnphải nắm vững tri thức, thành thạo các kỹ năng cơ bản Tư duy thuật toán rất cần thiết trong giai đoạn này.Chúng ta dễ dàng nắm được các khái niệm khoa học nhờ tư duy thuật toán vì biết vạch ra các dấu hiệu củakhái niệm, biết xây dựng thuật giải cho các bài toán Từ đó dễ dàng hình thành các kỷ năng, kỹ xảo
Trên cơ sở thuật toán cho trước ta có thể xây dựng nhiều bài toán cụ thể khác nhau
Tư duy thuật toán giúp chúng ta không dừng lại ở một cách giải bài toán nào đó mà luônnghĩ đến nhiều lớp bài tập càng lúc càng rộng hơn, tổng quát hơn
Bản thân việc phát hiện ra thuật toán để giải một bài tập nào đó cũng là một sự sáng tạo
Tư duy thuật toán cũng góp phần phát triển phẩm chất trí tuệ, rèn luyện thao tác, tư duy
Phân tích: Thông qua phân tích các bài toán (xét mọi trường hợp có thể xảy ra)phân tích một hoạt động lớn thành nhiều hoạt động thành phần
Tổng hợp: Là quá trình sắp xếp một cách hợp lý các hành động thành một quy trình
cụ thể, có thể miêu tả bằng lời hoặc sơ đồ khối
Khái quát: Là xuất phát từ bài toán cụ thể có thể khái quát thành bài toán tổng quátcho một dạng bài tập nào đó
CHƯƠNG 2 : GIỚI THIỆU VỀ ĐỒ HỌA PASCAL
A NHẮC LẠI CÁC KIẾN THỨC CƠ BẢN VỀ PASCAL
I Lệnh cấu trúc rẽ nhánh
II Lệnh cấu trúc lựa chọn
III Lệnh vòng lặp
IV Chương trình con
B GIỚI THIỆU KHÁI QUÁT VỀ ĐỒ HỌA PASCAL
I Những yếu tố căn bản về đồ họa Pascal
II Vẽ hình cơ bản
III Vẽ một số hình cơ bản
IV Vẽ đồ thị hàm số
Trang 5A NHẮC LẠI CÁC KIẾN THỨC CƠ BẢN VỀ PASCAL
1 Dạng không đầy đủ:
IF < Ðiều kiện > THEN < Công việc >
Ý nghĩa: Nếu điều kiện đúng thì thực hiện công việc
Ví dụ1: Viết chương trình tìm số lớn nhất trong 3 số a,b,c được nhập từ bàn phím
If a > max then max:=a;
If b > max then max:=b;
If c > max then max:=c;
Write (' Giá trị lớn nhất là : ',max);
Readln;
End
2 Dạng đầy đủ:
IF < Ðiều kiện > THEN < Công việc 1 > ELSE < Công việc 2 >
Ý nghĩa: Nếu điều kiện đúng thì thực hiện công việc 1, ngược lại thì thực hiện công việc 2
Ví dụ 2: Viết chương trình tìm số lớn nhất và nhỏ nhất của 2 số a,b được nhập từ bàn phím
End;
Writeln (' Giá trị lớn nhất là : ',max);
Writeln (' Giá trị nhỏ nhất là : ',min);
Trang 6End;
Ý nghĩa:
Nếu < biểu thức > = Hằng 1 thì thực hiện < Công việc 1 >
Nếu < biểu thức > = Hằng 2 thì thực hiện < Công việc 2 >
Nếu < biểu thức > = Hằng n thì thực hiện < Công việc n >
Ví dụ 3: Viết chương trình tính số ngày của một tháng
Write (' Nhập tháng :'); Readln (thang);
Write (' Nhập năm :'); Readln (nam);
Nếu < biểu thức > = Hằng 1 thì thực hiện < Công việc 1 >
Nếu < biểu thức > = Hằng 2 thì thực hiện < Công việc 2 >
Nếu < biểu thức > = Hằng n thì thực hiện < Công việc n >
Ngược lại ( không có giá trị nào của các hàng từ 1 đến n thỏa biểu thức ) thì thực hiện <Công việc n + 1 >
1 Vòng lặp xác định
Dạng 1: For < biến >:= < giá trị đầu > to < giá trị cuối > do < công việc >
Ý nghĩa: Vòng lặp được thực hiện theo 3 bước sau :
Bước 1:Kiểm tra giá trị đầu <= giá trị cuối Nếu đúng thì gán giá trị đầu cho biến và thựchiện vòng lặp
Trang 7Bước 2: Kiểm tra giá trị của biến <> giá trị cuối Nếu đúng thì tăng biến lên một đơn vị rồithực hiện công việc
Bước 3: Lặp lại bước 2 cho đến khi biến bằng giá trị cuối thì kết thúc vòng lặp
Ví dụ 4: Viết chương trình tính tổng: S = 1 + 2 + 3 + + n, với n nhập từ bàn phím
Dạng 2: For < biến >:= < giá trị đầu > downto < giá trị cuối > do < công việc >
Ý nghĩa: Vòng lặp được thực hiện theo 3 bước sau :
Bước 1:Kiểm tra giá trị đầu >= giá trị cuối Nếu đúng thì gán gán giá trị đầu cho biến vàthực hiện vòng lặp
Bước 2: Kiểm tra giá trị của biến <> giá trị cuối Nếu đúng thì giảm biến đi một đơn vị rồithực hiện công việc
Bước 3: Lặp lại bước 2 cho đến khi biến bằng giá trị cuối thì kết thúc vòng lặp
Ví dụ 5: Viết chương trình tìm các số nguyên dương là ước số của số n, với n nhập từ bàn phím
End
2 Vòng lặp không xác định
Dạng 1:While < Ðiều kiện > do < công việc >
Ý nghĩa: Vòng lặp được thực hiện như sau : vào lệnh sẽ kiểm tra < điều kiện > nếu
< điều kiện > đúng thì thực hiện < công việc > sau đó quay lại kiểm tra < điều kiện >, cứ tiếp tụcnhư thế cho đến khi nào < điều kiện > sai thì kết thúc lệnh
Ví dụ 6: Viết chương trình tính tổng: S = 1 + 2 + 3 + + n Sao cho S >= 1000
Trang 8 Dạng 2: Repeat < công việc > Until < Ðiều kiện >
Ý nghĩa: Vòng lặp được thực hiện như sau : vào lệnh sẽ thực hiện < công việc > sau đó
sẽ kiểm tra < điều kiện >, nếu < điều kiện > sai thì tiếp tục thực hiện < công việc >, cứ tiếp tục như
thế cho đến khi nào < điều kiện > đúng thì kết thúc lệnh
Ví dụ 7: Viết chương trình nhập vào một số nguyên dương n và xác định xem số đó có phải là số nguyên
Writeln (n,' Là hợp số ú ') Readln;
End
1 Khái niệm về chương trình con
Trong những chương trình lớn có những đoạn chương trình được lặp đi, lặp lại nhiều lần,
để tránh rườm rà và mất thời gian khi viết chương trình người ta thường phân chương trình thành nhiềumodule Mỗi module giải quyết một công việc nào đó Các module như vậy gọi là các chương trình con
Một thuận lợi của chương trình con là ta có thể dễ dàng kiểm tra xác định tính đúng đắn của nótrước khi ráp nối vào chương trình chính và do đó việc xác định sai xót để tiến hành hiệu chỉnh trongchương trình chính sẽ thuận lợi hơn
Có hai lọai chương trình con là hàm (Function) và thủ tục (Procedure)
Hàm và thủ tục đều là những chương trình con (ctc) nhưng hàm khác thủ tục ở chỗ là hàm trả vềmột giá trị cho lệnh gọi thông qua tên của nó còn thủ tục thì không
Do đó ta chỉ dùng hàm khi thỏa các yêu cầu :
Ta muốn nhận lại một kết quả (và chỉ một mà thôi)
Ta cần dùng tên ctc (chứa kết quả ) để viết trong các biểu thức
2.Hàm (Function)
Cú pháp: FUNCTION<tên hàm>(<Tham số hìnhthức : kiểu biến>):<kiểu kết quả>;
Khai báo trong nội bộ hàm
Nội dung hàm bắt đầu bằng BEGIN và kết thúc bởi END
Trang 9 Tên hàm là một tên tự đặt và phải tuân theo qui tắc đặt tên
Tham số hình thức thực chất là các biến, có thể hiểu như các đối số trong các hàm toán học.Nếu như nhiều tham số hình thức có cùng kiểu thì chúng được viết cách nhau bởi dấu ' , ' còn nếukhác kiểu thì phải cách nhau bằng dấu ' ; '
Kiểu kết quả: là một kiểu vô hướng, nó phản ánh kiểu của giá trị kết quả mà hàm sẽ manglại sau khi tính toán
Ví dụ 8:Viết chương trình tính tổng nghịch đảo giai thừa:
Writeln (' Tổng cần tìm là S = ',S:12:5);
Readln;
End
3 Thủ tục (Procedure): Có 2 loại là thủ tục có tham số và thủ tục không có tham số
Thủ tục không có tham số : Procedure < tên thủ tục >
Khai báo trong nội bộ thủ tục
Nội dung thủ tục bắt đầu bằng BEGIN và kết thúc bởi END
Trang 10Thủ tục có tham số : Procedure < tên thủ tục > ( < danh sách các tham số >: kiểu );
Khai báo trong nội bộ thủ tục
Nội dung thủ tục bắt đầu bằng BEGIN và kết thúc END
Progam Vi_du_10;
Uses Crt;
Var a,b: integer ;
Procedure TT ( x :Integer; Var y : Integer );
Begin x:= 2 * x; y:= 2 * y;
Writeln (' Ðang ở trong thủ tục');
Writeln ('Hai số của bạn bây giờ là:', x ,' và ' ,y );
Writeln (' Khi ra khỏi thủ tục ');
Writeln (' Hai số của bạn bây giờ là : ', a , ' và ' , b );
Writeln (' Nghĩa là a không thay đổi còn b bị thay đổi '); Readln;
End
B GIỚI THIỆU KHÁI QUÁT VỀ ÐỒ HỌA PASCAL
I Những yếu tố căn bản về đồ họa Pascal TOP
1 Các tập tin trong hệ thống đồ họa:
Khi cần viết một chương trình đồ họa Pascal cần có các tập tin sau đây: *.BGI, *.CHR,GRAPH.TPU
*.BGI ( Borland Graphics Interface ): Là các tập tin giao diện dùng để điều khiển màn hình đồ họa do công
ty Borland viết Các tập tin *.BGI được dùng khi làm đồ họa cho các kiểu màn hình khác nhau
CGA.BGI: Ðiều khiển card màn hình IBMCGA, MCGA
HERC.BGI: Ðiều khiển card màn hình HERCULES MONOCHROME
GAVGA.BGI: Ðiều khiển card màn hình IBMEGA, VGA
ATI.BGI: Ðiều khiển card màn hình AT & T6300 (400 dòng)
IBM8514.BGI: Ðiều khiển card màn hình IBM8514
PC3270.BGI: Ðiều khiển card màn hình IBM3270
Chương trình viết cho loại card màn hình nào thì cần phải có tập tin BGI cho kiểu màn hình đó Tập tin *.CHR (Character): Bao gồm các tập tin có thể viết cho các kiểu chữ (font) khác nhau nhưsau :
TRIP.CHR : Kiểu chữ Triplex
SCAN.CHR : Kiểu chữ Scan Serif
LITT.CHR : Kiểu chữ nhỏ (Little)
GOTH.CHR : Kiểu chữ Gothic
Trang 11 Ngoài ra còn có kiểu chữ mặc nhiên ( default) mà chúng ta thường thấy ở chế độvăn bản
GRAPH.TPU: Là tập tin chứa các kiểu, hàm, biến, thủ tục có liên quan đến việc dùng đồ họa Ðây
là Unit cho phép ta dùng chế độ đồ họa cho nên phải khai báo đầu tiên tại hàng lệnh sử dụng các unit(Uses)
2 Khởi động và ngưng chế độ đồ họa:
Khởi động chế độ đồ họa: Chế độ mặc nhiên của màn hình máy tính là chế độ văn bản Vì vậymuốn thết kế đồ họa chúng ta nhất thiết phải chuyển màn hình sang chế độ đồ họa bằng thủ tục
InitGraph ( Var GraphDriver : Integer; Var GraphMode : Integer; DriverPath : String );
GraphDriver: Là biến kiểu Integer chỉ card màn hình mà chúng ta có thể khai báo
GraphDriver (Gd) bằng các hằng đã định nghĩa trong Unit Graph
EGAMONO = 5
IBM8514 = 6 HERCMONO = 7 ATI400 = 8 VGA = 9 PC3270 = 10
Nhưng thường một chương trình đồ họa khi viết cần tương thích với nhiều loại card màn hình khác nhau,nên ta có thể khai báo Gd = Detect ( có giá tị là 0 ) Với hằng này máy sẽ tự động tìm loại card tương ứng
để chạy chương trình
GraphMode: Là biến kiểu Integer chỉ mode màn hình (Gm) Tương ứng với card màn hình đã khaibáo, ta khai mode màn hình trong biến Gm theo các hằng đã định nghĩa trong Unit Graph Trong trườnghợp khai báo Gd = Detect thì không cần phải khai báo Gm vì máy tính sẽ tự động xác định loại card vàmode màn hình tốt nhất ứng với loại card đó
PathDriver: Biến kiểu String chỉ đường dẫn vào nơi chứa các tập tin *.BGI được cài đặt trong máy Khi ta khai báo Gd = Detect thì máy sẽ tự động tìm loại card và mode màn hình tương thích đểchạy chương trình Nhưng chúng ta sẽ không biết được giá trị thực tế của Gm Ðể nhận lại các giá trị của
Gd và Gm ta sử dụng thủ tục sau :
Procedure DetectGraph ( Var Gd: Integer, Gm: Integer);
Thủ tục này sẽ tự động tìm kiếm loại card và mode màn hình tương thích cho chương trình
và trả kết quả loại card và mode màn hình lần lượt về cho các biến Gd, Gm
Khởi động đồ họa đôi khi không thành công, do vài yếu tố như khai báo không đúng loại card mànhình, không đúng đường dẫn đến các tập tin *.BGI dẫn đến treo máy Hàm sau đây cho chúng ta xác địnhviệc khởi động chế độ đồ họa có thành công hay không.?
Function GraphResult : Integer;
Nếu việc khởi động bị lỗi thì hàm sẽ trả về một giá trị khác 0 tương ứng với lỗi
Tên của lỗi được xác định bằng hàm:
Function GraphErrorMgs (ErrorCode : Integer ) : String;
Hàm cho ra một chuỗi ký tự thông báo lỗi đồ họa xác định bởi ErrorCode là kết quả củahàm
Nếu việc khởi động thành công hàm cho kết quả là 0
Hằng GrOk = 0, chỉ việc khởi tạo đồ họa không có lỗi
Hàm này sẽ trả về kết quả là mode đồ họa hiện thời đang làm việc
Procedure SetGraphMode ( Var GraphMode : Integer );
Ðặt một chế độ đồ họa, chế độ đó được quy định bởi GraphMode.
Trang 123 Ví dụ mẫu:
Thủ tục khởi tạo đồ họa:
Procedure EnterGraph (Path:String);
{Thực hiện công việc trong mode văn bản}
SetGraphMode (OldMode); { Trở về mode đồ họa }
{Thực hiện công việc trong mode đồ họa } CloseGraph; { Ðóng chế độ đồ họa } End
MỘT SỐ KIỂU MÀN HÌNH VÀ TRẠNG THÁI ÐỒ HỌA THÔNG DỤNG
GraphDriver Giá trị của
GraphDriver GraphMode
Giá trị của GraphMode
Ðộ phân giải Màn hình Số màu
Trang 13Hệ tọa độ trong màn hình đồ họa như sau:
Lưu ý: Trong chương trình chúng ta thường lấy các giá trị lớn nhất của tọa độ dòng( GetMaxX + 1 ) và tọa độ cột ( GetMaxY + 1 ) để phân bố các vị trí trên màn hình đồng thời thiết kế cáchình ảnh có thông số tỷ lệ
Uses Graph;
Var MaxX, MaxY, CenterX, CenterY : Integer;
Begin
MaxX:= GetMaxX; MaxY:= GetMaxY;
CenterX:= (GetMaxX Div 2 + 1 );
CenterY:= (GetMaxY Div 2 + 1 );
CloseGraph;
End
Trang 14Tuy nhiên, trên cùng một kích thước cố định của màn hình, tùy theo loại mode mà mật độ phân bố
số điểm trên màn hình khác nhau Ðôi khi làm cho chương trình chúng ta chạy tốt trên màn hình nàynhưng lại bị méo dạng ở màn hình khác
Ðể giải quyết vấn đề này người ta dùng tung độ biểu kiến ( giả sử rằng khoảng cách 2 điểm theochiều dọc bằng khoảng cách 2 điểm theo chiều ngang) Tỷ lệ trục tùy theo từng loại card và mode mànhình khác nhau được cho bởi thủ tục:
Procedure GetAspectRatio ( Xasp, Yasp : Word );
Thủ tục này cho 2 thành phần Xasp và Yasp mà Xasp / Yasp cho chúng ta tỷ lệ trục Từ
đó, ta có thể tính ra tung độ biểu kiến bằng cách xây dựng một hàm như sau:
Function Ad ( Value : Integer ) : Integer;
Var Xasp, Yasp: Word;
Begin
GetAspectRatio ( Xasp, Yasp );
Ad:= ( Value * Xasp ) div Yasp;
Procedure SetBkColor ( Color : Word );
Chức năng: Ðặt màu nền cho màn hình ( màu được chỉ bởi Color )
Ðặt màu vẽ
Procedure SetColor ( Color : Word );
Chức năng: Ðặt màu nền cho đường thẳng, đường tròn, cung, ellipse, các hình rỗng
và chữ viết ( màu được chỉ bởi Color )
BẢNG MÀU VÀ CÁC GIÁ TRỊ CỦA NÓ Tên hằng Black Blue Green Cyan Red Magenta Brown Lightgray
Procedure SetLineStyle ( LineStyle : Word; Pattern : Word; Thickness : Word );
Chức năng: Có tác dụng xác định kiểu đường, độ rộng đường, đối với đường thẳng,
đường tròn, ellipse và hình rỗng
LineStyle có giá trị từ 0 đến 4:
Trang 154: Nét do người dùng định nghĩa
Pattern : Các giá trị của thành phần này được bỏ qua ( bằng 0 )
Thickness : Có giá trị từ 1 đến 3 cho chọn độ dày của nét vẽ
2 Các thủ tục vẽ điểm và đường
Ø Procedure PutPixel (x , y : Integer ; Color : Word );
Chức năng: Vẽ một điểm tại tọa độ ( x, y ) với màu là Color
Ø Procedure Line (x1 , y1, x2, y2 : Integer );
Chức năng: Vẽ một đoạn thẳng từ tọa độ ( x1, y1 ) đến ( x2 , y2 )
Ø Procedure MoveTo (x , y : Integer );
Chức năng: Di chuyển con trỏ đến tọa độ ( x, y )
Ø Procedure MoveRel (dx , dy : Integer );
Chức năng: Di chuyển con trỏ một đoạn dx theo trục hoành và dy theo trục tung so với vịtrí hiện hành của con trỏ ( chiều di chuyển phụ thuộc vào dấu của dx, dy )
Ø Procedure LineTo (x , y : Integer );
Chức năng: Vẽ một đoạn thẳng từ vị trí hiện hành của con trỏ đến tọa độ (x, y) Vị trí hiệnhành được định bởi Moveto Thủ tục này thường được dùng để vẽ đường gấp khúc
Ø Procedure LineRel (dx , dy : Integer );
Chức năng: Vẽ một đoạn thẳng từ vị trí hiện hành của con trỏ đến vị trí mới được xác địnhbằng độ dời ngang dx và độ dời dọc dy
3 Các thủ tục vẽ hình rỗng
Ø Procedure Rectangle (x1 , y1, x2, y2 : Integer );
Chức năng: Vẽ một hình chữ nhật có tọa độ điểm trên trái là (x1, y1) và điểm dưới bên phải
là (x2, y2) với màu vẽ được định bởi Setcolor, và kiểu đường được định bởi SetLineStyle
Ví dụ: Viết chương trình vẽ một hệ trục tọa độ vuông góc ở trung tâm màn hình có màu đỏ trên nền xanhnhạt, viền xung quanh màn hình bằng một hình chữ nhật màu vàng nét đậm
Prorgam He_truc;
Var CenterX, CenterY: Interger;
Procedure EnterGraph ( Path : String );
Begin { Chương trình chính }
EnterGraph (‘C: \ BP \ BGI ’);
CenterX:= GetMaxX Div 2;
CenterY:= GetMaxY Div 2;
SetBkColor( 9 ); SetColor ( Red );
Line ( CenterX, 5, CenterX, GetMaxY - 5 ); {Trục tung } Line (5, CenterY, GetMaxX - 5, CenterY ); { Trục hoành } SetLineStyle ( 0, 0, 2); SetColor ( Yellow );
Rectangle (0, 0, GetMaX, GetMaxY);
Readln;
CloseGraph;
End
Ø Procedure Circle (x , y : Integer; Radius : Word );
Chức năng: Vẽ một hình tròn có tọa độ tâm là (x, y), bán kính là radius với màu vẽ đượcđịnh bởi Setcolor, và kiểu đường được định bởi SetLineStyle
Ø Procedure Arc (x , y : Integer; dau, cuoi : Word; Radius : Word );
Chức năng: Vẽ một cung tròn có tọa độ tâm là (x, y), bán kính là radius, điểm đầu là dau,điểm cuối là cuoi với màu vẽ được định bởi Setcolor, và kiểu đường được định bởi SetLineStyle
Các điểm đầu và cuối được xác định như sau :
Vị trí 3 giờ là 0o
Vị trí 12 giờ là 90o
Trang 16Vị trí 9 giờ là 180o
Ø Procedure Ellipse (x , y : Integer; dau, cuoi : Word; ar, br : Word );
Chức năng: Vẽ một cung ellipse có tọa độ tâm là (x, y), điểm đầu là dau, điểm cuối là cuoi
ar là bán kính ngang, br là bán kính dọc với màu vẽ được định bởi Setcolor, và kiểu đường được định bởiSetLineStyle
vẽ hình quạt Procedure Sector (x, y : Integer; dau, cuoi : Word; ar, br : Word );
Chức năng: Vẽ một cung ellipse có 2 bán kính nối từ tâm đến 2 điểm đầu và cuối của cung
Ví dụ: Viết chương trình vẽ một số đường tròn, cung tròn, ellipse và cung ellipse
Prorgam Cung;
Var CenterX, CenterY: Interger;
Procedure EnterGraph ( Path : String );
Procedure SetFillStyle ( Pattern : Word ; Color : Word );
Chức năng: Xác định nét tô và màu tô cho tất cả các hình đặc như bar, FillEllipse.
Pattern có các hằng định sẳn từ 0 đến 11
CÁC KIỂU TÔ VÀ GIÁ TRỊ TƯƠNG ỨNG CỦA PATTERN
Trang 17XHatchFill 8 Nét chải dày
Vẽ hình chữ nhật có tô:
Procedure Bar (x1, y1, x2, y2 : Integer);
Chức năng:Vẽ một hình chữ nhật có kiểu tô được xác định bởi SetFillStyle
Vẽ hình hộp chữ nhật có tô:
Procedure Bar3D (x1, y1, x2, y2 : Integer ; Depth : Word ; Top : Boolean);
Chức năng:Vẽ một hình hộp chữ nhật có kiểu tô được xác định bởi SetFillStyle, nét
viền xác định bởi SetLineStyle và SetColor, Depth là số điểm theo chiều sâu Nếu Top = true thì hình hộp
có nắp còn nếu Top = False thì hình hộp không có nắp (thường dùng trong trường hợp 2 khối chồnglên nhau )
Ví dụ: Vẽ một hình chữ nhật có tô, một hình hộp chữ nhật rời và 2 hình hộp chữ nhật chồng lên nhau
Prorgam Hop;
Var y0, y1, y2, x1, x2: Interger;
Procedure EnterGraph ( Path : String );
{ Hình hộp chữ nhật có chiều sâu 50, có đỉnh }
SetFillStyle ( 11, 5); { Tô màu tím với nét chấm dày }
y0:=50; y1:= 150; y2:=200; x1:= 350; x2:=500;
Bar3D (x1, y0, x2, y1, 40, true );
Procedure FillEllipse (x, y : Integer ; ar, br : Word );
Chức năng: Vẽ một ellipse có tọa độ tâm là (x, y), ar là bán kính ngang, br là bán kính
dọc với màu và kiểu tô được định bởi SetFillStyle
Procedure PieSlice (x , y : Integer; dau, cuoi : Word; Radius : Word );
Chức năng: Vẽ một hình quạt có tọa độ tâm là (x, y), điểm đầu là dau, điểm cuối là cuoi bán
kính là Radius, màu và kiểu tô được định bởi SetFillStyle
Ví dụ: Vẽ Ellipse và hình quạt có tô
Trang 18Prorgam Ve;
Var x, y, x1, y1, dau, cuoi, bk: Interger;
Procedure EnterGraph ( Path : String );
Begin { Chương trình chính }
Write (' x = ' );Readln (x);
Write (' y = ' );Readln (y);
Write (' ar = ' ); Readln (ar);
Write (' br = ' ); Readln (br);
Write (' Nhập tọa độ tâm hình quạt ' );
Write (' x1 = ' ); Readln (x1);
Write (' y1 = ' ); Readln (y1);
Write (' Nhập góc đầu ' ); Readln (dau);
Write (' Nhập góc cuối ' ); Readln (cuoi);
Procedure DrawPoly (NumPoints :Word ; Var PolyPoints );
Polypoints : Array [ 1 k +1 ] of PointType;
Chức năng: Vẽ một đa giác NumPoints là số đỉnh của đa giác ( k đỉnh ) Muốn vẽ đa
giác ta khai báo tất cả tọa độ các đỉnh của đa giác ở const ( phần khai báo hằng )
Procedure FillPoly (NumPoints :Word ; Var PolyPoints );
Polypoints : Array [ 1 k +1 ] of PointType;
Chức năng: Tô một đa giác NumPoints là số đỉnh của đa giác ( k đỉnh ) Muốn vẽ đa
giác ta khai báo tất cả tọa độ các đỉnh của đa giác ở const ( phần khai báo hằng )
Lệnh SetColor cho đặt màu viền
Lệnh SetFillStyle cho phép đặt kiểu tô và màu tô đa giác
Ví dụ: Viết chương trình tô đa giác
Prorgam DaGiac;
Const Polygon : Array [ 1 6] of PoinTyle =
((x:150,y:200), (x:300,y:70), (x:450,y:250),
(x:390,y:310), (x:200,y:280), (x:150,y:200));
Procedure EnterGraph ( Path : String );
Begin { Chương trình chính }
EnterGraph (‘C: \ BP \ BGI ’);
SetColor (14);
Trang 19Procedure SetTextStyle ( Font : Word; Direction : Word ; CharSize : Word );
Tham số Font có 5 kiểu 0 4 là các hằng đã được định nghĩa trước
Direction : Ðịnh hướng viết
+ 0 : Viết chữ theo chiều ngang
+ 1 : Viết chữ theo chiều dọc
CharSize : Cỡ chữ có giá trị từ 1 đến 10
Viết chữ ra màn hình:
Procedure OutText ( St : String );
Chức năng: Xuất chuỗi ký tự St lên màn hình bắt đầu từ vị trí con trỏ có kiểu viết đượcđịnh bởi SetTextStyle và màu được định bởi SetColor
Procedure OutText ( x, y : Integer ; St : String );
Chức năng: Xuất chuỗi ký tự St lên màn hình bắt đầu từ vị trí ( x, y) có kiểu viết được địnhbởi SetTextStyle và màu được định bởi SetColor
Ví dụ: Viết chương trình mô tả các font chữ
Prorgam Chu;
Var Co, kieu : Integer;
Procedure EnterGraph ( Path : String );
Tạo ViewPort:
Procedure SetViewPort ( x1, y1, x2, y2 : Integer ; Clip : Boolean );
Chức năng: Ðặt một ViewPort trên màn hình có góc trên trái là (x1, y1) và góc dưới phải là(x2, y2)
Æ 0<= x1 <= x2 <= GetMaxX
Trang 20Æ 0<= y1 <= y2 <= GetMaxY Nếu Clip = True thì hình vẽ sẽ bị giới hạn trong ViewPort
Nếu Clip = False thì hình vẽ có thể vượt ra ngoài biên củaViewPort Khi một ViewPort được tạo ra thì nó sẽ hoạt động cho đến khi một ViewPort mới được tạo
ra
Ðiểm (x1, y1) bây giờ có tọa độ tương đối là (0,0)
Bằng cách đặt : SetViewPort ( GetMaxX div 2, GetMaxY div 2, GetMaxX, GetMaxY, False ) Ta đã chuyển góc tọa độ về trung tâm màn hình và do đó hệ tọa độ bây giờ gần giống như hệ tọa độ decac ngoại trừ chiều dương của trục tung vẫn quay về phía dưới
Lau sạch ViewPort:
Procedure ClearViewPort;
Chức năng: Lau sạch ViewPort đang hoạt động và đưa con trỏ về tọa độ (0,0)
Lưu ý : Muốn lau sạch màn hình ta dùng ClearDevice
Ví dụ: Viết chương trình vẽ hệ trục tọa độ Decac
CenterX:=GetMaxX div 2; CenterY:=GetMaxY div 2;
Top:=-GetMaxY div 2; Bottom:=GetMaxY div 2-15;
Left:=-GetMaxX div 2+10; Right:=GetMaxX div 2-10;
SetBkColor(Blue);
SetviewPort(CenterX,CenterY,GetMaxX,GetMaxY,False);
SetColor(Yellow);
Rectangle(Left,Top,Right,Bottom);
Trang 211 Chương trình vẽ Ellipse có hình chữ nhật cơ sở ngoại tiếp
Write('Nhap hoanh do tam Ellipse x ='); Readln(x);
Write('Nhap tung do tam Ellipse y ='); Readln(y);
Write('Nhap ban kinh truc thuc cua Ellipse ar ='); Readln(ar);
Write('Nhap ban kinh truc ao cua Ellipse br ='); Readln(br);
EnterGraph('C:\BP\BGI');
CenterX:=GetMaxX div 2; CenterY:=GetMaxY div 2;
Top:=-GetMaxY div 2; Bottom:=GetMaxY div 2-15;
Left:=-GetMaxX div 2+10; Right:=GetMaxX div 2-10;
Trang 22Write('Nhap hoanh do tam duong tron x0 ='); Readln(x0);
Write('Nhap tung do tam duong tron y0 ='); Readln(y0);
Write('Nhap chieu dai cua hinh chu nhat a ='); Readln(a);
Write('Nhap chieu rong cua hinh chu nhat b ='); Readln(b);
r:=Round(Sqrt(sqr(a/2)+sqr(b/2)));
Trang 23x1:=round(x0-a/2); x2:=round(x0+a/2);
y1:=round(y0-b/2); y2:=round(y0+b/2);
EnterGraph('C:\BP\BGI');
CenterX:=GetMaxX div 2; CenterY:=GetMaxY div 2;
Top:=-GetMaxY div 2; Bottom:=GetMaxY div 2-15;
Left:=-GetMaxX div 2+10; Right:=GetMaxX div 2-10;
Trang 24Write('Nhap hoanh do tam Ellipse x ='); Readln(x);
Write('Nhap tung do tam Ellipse y ='); Readln(y);
Write('Nhap ban kinh truc thuc cua Ellipse ar ='); Readln(ar);
Write('Nhap ban kinh truc ao cua Ellipse br ='); Readln(br);
r:=Round(Sqrt(sqr(ar)+sqr(br)));
x1:=round(x-ar); x2:=round(x+ar);
y1:=round(y-br); y2:=round(y+br);
EnterGraph('C:\BP\BGI');
CenterX:=GetMaxX div 2; CenterY:=GetMaxY div 2;
Top:=-GetMaxY div 2; Bottom:=GetMaxY div 2-15;
Left:=-GetMaxX div 2+10; Right:=GetMaxX div 2-10;
OuttextXY(-230,Bottom+7,'Rectangle ngoai tiep Ellipse va co
hinh tron co so ngoai tiep');