You are on page 1of 45

LẬP TRÌNH HỆ THÔNG TIN ĐỊA LÝ

TUẦN 1
GIẢNG VIÊN: NGUYỄN QUỐC HUY
NỘI DUNG

1. THÔNG TIN CHUNG VỀ MÔN HỌC


2. GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH PYTHON
3. CÂU LỆNH VÀ CHƯƠNG TRÌNH TRONG PYTHON
4. KHÁI NIỆM VỀ BIẾN, KHỐI LỆNH, KHAI BÁO CHUỖI
5. NHẬP VÀ XUẤT DỮ LIỆU TRONG PYTHON
6. KIỂU DỮ LIỆU DỮ LIỆU VÀ CÁC TOÁN TỬ TRONG PYTHON
7. MỘT SỐ VÍ DỤ MINH HỌA
8. BÀI TẬP VỀ NHÀ
THÔNG TIN CHUNG VỀ MÔN HỌC
GIỚI THIỆU

• TÊN MÔN: LẬP TRÌNH HỆ THÔNG TIN ĐỊA LÝ (GIS PROGRAMMING)

• SỐ TÍN CHỈ: 3 (TƯƠNG ĐƯƠNG 15 TUẦN)

• NỘI DUNG CHÍNH:

• Nắm vững kiến thức cơ bản về ngôn ngữ lập trình của Python.

• Hiểu được nguyên lý vận hành của Toolbox trên phần mềm ArcMap.

• Xây dựng được Toolbox sử dụng công cụ Model Builder trên phần mềm ArcMap.

• Xây dựng được Toolbox trên phần mềm ArcMap sử dụng ngôn ngữ lập trình Python.

• GIẢNG VIÊN: TS. NGUYỄN QUỐC HUY – KHOA ĐỊA LÝ – ĐH KHTN – ĐH QGHN

• EMAIL: huyquoc2311@hus.edu.vn / huyquoc2311@gmail.com

• GOOGLE SCHOLAR: https://scholar.google.com/citations?user=APx5Z-YAAAAJ&hl=en&oi=sra


TÀI LIỆU MÔN HỌC VÀ PHẦN MỀM HỌC

• TÀI LIỆU CHÍNH: BÀI GIẢNG TRÊN LỚP

• PHẦN MỀM HỌC: (https://replit.com/languages/python3), ArcMap


KIẾN THỨC YÊU CẦU

• TƯ DUY LOGIC. KHẢ NĂNG SỬ DỤNG 1 LOẠI NGÔN NGỮ LẬP TRÌNH (KHÔNG BẮT
BUỘC)

• TƯ DUY PHÂN TÍCH VẤN ĐÈ. KHẢ NĂNG LÀM VIỆC NHÓM. KHẢ NĂNG SỬ DỤNG PHẦN
MỀM (EMAIL, TEXT EDITOR, WEB SEARCH, v.v)
ĐÁNH GIÁ KẾT QUẢ

• ĐIỂM CHUYÊN CẦN: 20%

• ĐIỂM THI GIỮA KÌ: 30% (BÀI TẬP)

• ĐIỂM THI CUỐI KÌ: 50% (BÀI TẬP LỚN)


MỤC TIÊU MÔN HỌC

• LÀM QUEN VỚI NGÔN NGỮ LẬP TRÌNH PYTHON

• BIẾT ĐƯỢC MỘT SỐ KIỂU DỮ LIỆU VÀ HÀM CƠ BẢN CỦA NGÔN NGỮ LẬP TRÌNH PYTHON

• HIỂU ĐƯỢC NHỮNG THUẬT NGỮ VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

• BIẾT TỰ ĐỘNG HÓA QUY TRÌNH XỬ LÝ DỮ LIỆU HỆ THÔNG TIN ĐỊA LÝ BẰNG CÔNG CỤ
MODEL BUILDER

• BIẾT TỰ ĐỘNG HÓA QUY TRÌNH XỬ LÝ DỮ LIỆU GIS BẰNG NGÔN NGỮ PYTHON THÔNG QUA
ARCPY PACKAGE

• HIỂU ĐƯỢC SỰ MỐI QUAN HỆ GIỮA LẬP TRÌNH VÀ HỆ THÔNG TIN ĐỊA LÝ
GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH PYTHON
LẬP TRÌNH MÁY TÍNH

• LẬP TRÌNH MÁY TÍNH LÀ GÌ?

• VỀ CƠ BẢN NÓ ĐƠN GIẢN LÀ VIỆC MÔ TẢ, HƯỚNG DẪN CHO MÁY TÍNH THỰC HIỆN NHỮNG THỨ BẠN MUỐN.

• TẠI SAO CẦN LẬP TRÌNH MÁY TÍNH?

• MÁY TÍNH CÓ THỂ XỬ LÝ CÁC VẤN ĐỀ VỚI TỐC ĐỘ CỰC KỲ NHANH CHÓNG, CHÍNH XÁC VỚI CHI PHÍ THẤP.

• LỢI ÍCH CỦA VIỆC HỌC LẬP TRÌNH MÁY TÍNH?

• TĂNG NĂNG SUẤT LÀM VIỆC

• TĂNG THU NHẬP

• TĂNG KĨ NĂNG TỰ GIẢI QUYẾT VẤN ĐỀ


NGUỒN GỐC CỦA PYTHON

• Python đã được hình thành vào cuối những năm 1980, và việc thực hiện nó
vào tháng 12 năm 1989 bởi Guido van Rossum (hiện đăng làm việc cho
Google) ở Hà Lan như là một kế thừa cho ngôn ngữ ABC (tự lấy cảm hứng
từ SETL) có khả năng xử lý ngoại lệ và giao tiếp với Hệ điều hành Amoeba

• Gồm nhiều phiên bản khác nhau:

• Python 2 (ra mắt năm 2000)

• Python 3 (ra mắt năm 2008)

• Python 4 (dự kiến ra mắt năm 2023)


GIỚI THIỆU VỀ PYTHON

• Ngôn ngữ kịch bản mã nguồn mở

• Khả năng khai báo biến tự nhiên, phong phú và mang tính động cao

• Kho thư viện tính toán hỗ trợ đa dạng, phong phú

• Chương trình được thông dịch thay vì biên dịch


GIỚI THIỆU VỀ PYTHON

• Cấu trúc cho phép vừa hướng thủ tục, vừa hướng đối tượng

• Hỗ trợ Module và Package

• Hỗ trợ xử lý lỗi bằng ngoại lệ (Exception)

• Cho phép tương tác với các Module viết bằng ngôn ngữ lập trình khác
ƯU ĐIỂM CỦA PYTHON

• Cấu trúc cú pháp đơn giản, dễ đọc

• Mã nguồn ngắn gọn

• Nhiều bộ thư viện chuẩn và thư viện mở rộng, đáp ứng được nhiều yêu cầu khác nhau

• Chạy trên nhiều nền tảng khác nhau (Windows, Linux, Unix, Macintosh, v.v)

• Mạng lưới cộng đồng sử dụng rộng lớn


NHƯỢC ĐIỂM CỦA PYTHON

• Hiệu năng chương trình chậm

• Yếu trong việc giao tiếp với các thư viện viết bằng các ngôn ngữ khác

• Yếu trong hỗ trợ tính toán trên thiết bị di động

• Cấu trúc khối lệnh dễ gây nhầm lẫn cho người mới bắt đầu

• Gỡ lỗi đòi hỏi nhiều kinh nghiệm

• Kém hỗ trợ thao tác với cơ sở dữ liệu


CÂU LỆNH VÀ CHƯƠNG TRÌNH TRONG PYTHON
KHỞI CHẠY
KHỞI CHẠY

• Python có 2 chế độ thực thi


• Chế độ thực thi: chỉ ra chương trình cần thực hiện. Trình dịch python sẽ nạp, dịch và chạy chương
trình đó
• Chế độ dòng lệnh: gõ và chạy từng lệnh một
• Chế độ thực thi: “python ex_01.py” chạy file ex_01.py
• Chê độ dòng lệnh: “python” trình thông dịch python sẽ chờ người dùng gõ từng dòng lệnh
TRÌNH SOẠN THẢO MÃ NGUỒN PYTHON

• Python có thể được viết bởi bất kì phần mềm soạn thảo văn bản nào
• Một số phần mềm thích hợp cho việc soạn thảo mã nguồn Python bao gồm:
• IDLE
• Sublime Text
• Atom
• Spyder
• PyCharm
• Notepad++
• Jupyter
BIÊN DỊCH MÃ NGUỒN PYTHON

• Mã nguồn Python sẽ được biên dịch sang dạng bytecode để thực thi
• Mã lệnh sau khi biên dịch được lưu vào file với phần mở rộng .pyc
• Việc biên dịch giúp tang tốc độ thực hiện chương trình
KHÁI NIỆM VỀ BIẾN, KHỐI LỆNH, KHAI BÁO CHUỖI
KHAI BÁO BIẾN

• Biến được hiểu là một vùng bộ nhớ được đặt tên


• Biến trong Python:
• Không cần khai báo trước
• Không cần định nghĩa kiểu dữ liệu
• Phân biệt bởi chữ hoa chữ thường
• Có thể đổi sang kiểu dữ liệu khác
KHAI BÁO BIẾN

• Tên biến có thể chứa chữ cái hoặc chữ số gạch dưới, kí tự bắt đầu không được dùng với số.
• Tên biến không được trùng với từ khoa
• Từ python3 tên biến có thể dùng chữ cái Unicode
• Tất cả mọi biến trong python đều là đối tượng, vì thế nó có kiểu giá trị và vị trí trong bộ nhớ
KHAI BÁO CHUỖI

• Dữ liệu chuỗi rất quan trọng trong ngôn ngữ lập trình Python, tương tự như các ngôn ngữ lập
trình khác
• Nguyên tắc khai báo chuỗi: Mở đầu sao, kết thúc vậy
• Nội dung trên 1 dòng sử dụng: ‘, “ hoặc “””
• Nội dung trên nhiều dòng sử dụng: “””
• Ví dụ:
• string = ‘Nam’
• string_with_quote = “I’m fine”
• String_with_multiple_lines = “””This string has
multiple lines”””
CHUỖI THOÁT (ESCAPE SEQUENCE)

• Escape sequence là một phương pháp để viết các kí tự đặc biệt (không thể viết theo lối thông
thường)

Cách viết Ý nghĩa Thuật ngữ


\a Kí tự cảnh báo (phát ra một tiếng bíp nếu in ra) Alert
\b Kí tự xóa trước (dịch con trỏ về phía trước 1 ô) Backspace
\n Kí tự dòng mới (dịch con trỏ xuống dòng dưới) Linefeed
\r Kí tự trở về (dịch con trỏ về đầu dòng) Carriage return
\t Kí tự tab (dịch con trỏ đi 1 dấu tab) Tab
\\ Kí tự gạch chéo (\) Blackslash
\' Kí tự dấu nháy đơn (') Single quote
\" Kí tự dấu nháy kép (") Double quote
\uxxxx Kí tự unicode bất kì có mã xxxx (dạng hex value)
CHUỖI THÔ (RAW STRING)

• CHƯƠNG TRÌNH DỄ NHẦM LẪN KHI CÁC CHUỖI CÓ DẤU GẠCH CHÉO TƯƠNG TỰ
CHUỖI THOÁT \ . Ví dụ: file_path = “C:\teamviewer”
• Python cho phép bỏ qua chuỗi thoát bằng cách khai báo thêm chữ r vào trước chuỗi khai báo
• Ví dụ: file_path = r“C:\teamviewer”
KHỐI LỆNH

• Python sử dụng khoảng trắng để phân biệt khối lệnh


• Python không quy định số lượng khoảng trắng nhưng các khối lệnh phải cùng số khoảng trắng
NHẬP VÀ XUẤT DỮ LIỆU
NHẬP DỮ LIỆU

• Sử dụng hàm input để nhập dữ liệu


• Mặc định mọi input là dạng chuỗi.
• Có thể kết hợp chuyển kiểu dữ liệu nếu muốn tường minh
• Ví dụ: name = input(“Hãy nhập vào tên của bạn: ”
XUẤT DỮ LIỆU

• Python sử dụng hàm print để xuất dữ liệu


• Ví dụ:
• a=5
• print(a)
KIỂU DỮ LIỆU VÀ CÁC TOÁN TỬ TRONG PYTHON
KIỂU SỐ

• Python cho phép viết số nguyên theo một số hệ cơ số thông dụng trong lập trình
• A = 1234 (Hệ cơ số 10)
• B = 0xAF1 (Hệ cơ số 16)
• C = 0o772 (Hệ cơ số 8)
• D = 0b1001 (Hệ cơ số 2)
• Sử dụng các hàm phù hợp để chuyển đổi từ số nguyên thành string ở các hệ cơ số khác nhau
• K = str(1234)
• L = hex(1234)
• M = oct(1234)
• N = bin (1234)
KIỂU SỐ

• Từ Python 3, số nguyên không giới hạn số chữ số


• Số thực có thể viết theo dạng thông thường hoặc khoa học
• X = 1.5
• Y = 313.15e-2
• Số phức có thể được viết với chữ j đại diện cho phần ảo
• A = 3+4j
• B = 2-2j
TOÁN TỬ SỐ HỌC TRONG PYTHON

Operator Name Example

+ Addition x+y

- Subtraction x-y

* Multiplication x*y

/ Division x/y

% Modulus x%y

** Exponentiation x ** y

// Floor division x // y
TOÁN TỬ SO SÁNH TRONG PYTHON

Operator Name Example


== Equal x == y
!= Not equal x != y
> Greater than x>y
< Less than x<y
>= Greater than or equal to x >= y
<= Less than or equal to x <= y
TOÁN TỬ LOGIC TRONG PYTHON

Operator Description Example


and Returns True if both statements are true x < 5 and x < 10
or Returns True if one of the statements is x < 5 or x < 4
true
not Reverse the result, returns False if the not(x < 5 and x < 10)
result is true
TOÁN TỬ BITWISE TRONG PYTHON

Operator Name Description

& AND Sets each bit to 1 if both bits are 1


| OR Sets each bit to 1 if one of two bits is 1
^ XOR Sets each bit to 1 if only one of two bits is 1
~ NOT Inverts all the bits
<< Zero fill Shift left by pushing zeros in from the right and let the leftmost bits fall off
left shift
>> Signed Shift right by pushing copies of the leftmost bit in from the left, and let the
right shift rightmost bits fall off
TOÁN TỬ MEMBERSHIP TRONG PYTHON

Operator Description Example


in Returns True if a sequence with the x in y
specified value is present in the object
not in Returns True if a sequence with the x not in y
specified value is not present in the
object
TOÁN TỬ IDENTITY TRONG PYTHON

Operator Description Example


is Returns True if both variables are the x is y
same object
is not Returns True if both variables are not x is not y
the same object
MỘT SỐ VÍ DỤ MINH HỌA
TÍNH N!
def giaithua(n):
Định nghĩa hàm
gt = 1 với tham số n
for i in range(2, n+1):
Vòng lặp cho i
gt = gt * i
chạy từ 2 đến n
return gt
Trả về kết quả
a = int(input("Nhập giá trị n: "))
print("N! =", giaithua(a)) Nhập số n nguyên

Gọi hàm tính và in


ra kết quả
TÍNH ƯỚC CHUNG LỚN NHẤT

a = int(input("A = ")) Nhập 2 số nguyên a


b = int(input("B = ")) và b

Vòng lặp chừng


while (b > 0):
nào b > 0
if (a > b):
a, b = b, a % b Xử lý khi a > b

else: Xử lý khi a <= b


a, b = a, b % a
print("Ước số chung lớn nhất là:", a) In kết quả
BÀI TẬP VỀ NHÀ
BÀI TẬP

• Thuế thu nhập cá nhân của bạn hàng tháng là 10%. Viết chương trình nhập lương của bạn
trong 1 tháng. Tính số tiền thuế mà bạn phải nộp trong một tháng.
• Nhập số nguyên n. Viết chương trình in số nguyên n ở dạng hệ cơ số 16, hệ cơ số 8 và hệ cơ
số 2.
• Viết chương trình nhập bán kính của một dường tròn. Tính diện tích của đường tròn đó.
KẾT THÚC TUẦN 1

You might also like