Tải bản đầy đủ (.ppt) (95 trang)

Lập trình Pascal - P1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.37 MB, 95 trang )

Lê Minh Hoàng

2
Nội dung bài học
Cách giao tiếp với máy tính bằng “ngôn ngữ”
Quá trình phát triển của ngôn ngữ lập trình
Ngôn ngữ bậc cao
Trình dịch
Một chương trình viết bằng ngôn ngữ bậc cao
được xử lý như thế nào?
Thuật toán là gì?, Kỹ thuật giải quyết các bài toán
tin học như thế nào?

3
Kiến trúc máy tính
Bộ xử lý trung tâm
(CPU: Central Processing Unit)
Bộ tính toán số học và logic
ALU: Arithmetic-Logic Unit
Bộ điều khiển
CU: Control Unit
Những t/p khác: Bộ đồng xử lý toán
học, bộ tăng tốc đồ họa và video…
Bộ nhớ trong
(Main Memory)
Secondary Storage
Thiết bị vào
(Input Device)
Thiết bị ra
(Output Device)


4
Mô hình xử lý thông tin
Input Output
Process
Storage
Input: Bàn phím (Keyboard), Con chuột (Mouse), Máy quét (Scanner), …
Processing: Máy tính thực hiện chương trình.
Output: Màn hình (Monitor), Máy in (Printer), Máy Fax …
Storage: Đĩa cứng (Hard Disks), Đĩa mềm (Floppy Disks), Băng từ (Magnetic
tape)…

5
Minh họa một hệ thống máy tính
CPU
Memory
I/O Interface
Floppy Disks
CD/DVD
Monitor
Hard Disk
Keyboard
Mouse
Scanner
Printer
Speakers
Tape

6
Phần cứng và Phần mềm
Phần cứng (Hardware)

Xử lý dữ liệu bằng cách tiến hành các lệnh theo chỉ thị.
Cung cấp đầu vào (Input) và đầu ra (Output) qua các cổng giao tiếp thiết bị
ngoại vi.
Phần mềm
Chứa các chỉ thị lệnh giao cho phần cứng thực hiện.
Là chương trình được viết để thực hiện một nhiệm vụ cụ thể nào đó.
Phần mềm hệ thống (System Programs): Là chương trình viết ra để điều
khiển máy tính, các thiết bị nối với máy tính, các chương trình khác chạy
trên máy tính. Ví dụ: Hệ điều hành Windows, Linux, Mac OS.
Phần mềm ứng dụng (Application Programs): Là chương trình viết ra để
thực hiện một tác vụ chuyên biệt nào đó. Ví dụ: Phần mềm soạn thảo văn
bản MS Office, Phần mềm gõ tiếng Việt Unikey v.v…

7
Ngôn ngữ của máy tính
Nhắc lại:
Phần cứng tiến hành các lệnh theo chỉ thị
Phần mềm cung cấp các chỉ thị cho phần cứng thực hiện
Vậy chỉ thị là?
Ngôn ngữ của máy tính
Chỉ thị được biểu diễn bằng một dãy các số 0 và 1. VD
100010011101.
Cách mã hóa chỉ thị dưới dạng số nhị phân gọi là ngôn ngữ máy
Số 0 và 1 được gọi là chữ số nhị phân (Binary Digit hoặc bit)
Một dãy số nhị phân được gọi là mã nhị phân (Binary Code)

8
Ví dụ về ngôn ngữ máy
Ví dụ
Độ dài quãng đường = Vận tốc x Thời gian

Cho biết vận tốc = 15 (km/h)
Thời gian = 6 (h)
Tính độ dài quãng đường
Giả sử
1001 chỉ thị máy tính đọc giá trị ở 4 bit tiếp theo.
1011 chỉ thị máy tính nhân giá trị đang có với giá trị ở 4 bit tiếp theo
và nhớ lại giá trị kết quả
1000 chỉ thị máy tính cho biết kết quả đang nhớ
Lệnh
1001 1111
1011 0110
1000

9
Hợp ngữ (Assembly language)
Đặc điểm
Dùng lệnh hợp ngữ thay vì viết mã nhị phân của từng chỉ
thị.
Có một chương trình (Assembler) dịch lệnh hợp ngữ ra
ngôn ngữ máy.
Cho phép dùng biến số, chấp nhận biểu diễn thập phân
và thập lục phân của số nguyên.
Ví dụ
Viết LOAD thay cho 1001, MULT thay cho 1011, STOR
thay cho 1000.
Chương trình trở thành
LOAD 15
MULT 6
STOR
Chương trình dễ đọc và khó bị lỗi hơn ngôn ngữ máy


10
Ngôn ngữ bậc cao (High level languages)
Ngôn ngữ bậc cao: Basic, FORTRAN,
COBOL, Pascal, C, Object Pascal, C++…
Để tính quãng đường (L) cho biết vận tốc (V) và
thời gian (T), có thể viết lệnh trong ngôn ngữ
Pascal: L := V * T
Trình dịch: Là chương trình dịch các lệnh
viết trong ngôn ngữ bậc cao thành những
chỉ thị tương đương trong ngôn ngữ máy.

11
Quy trình xử lý chương trình
Một chương trình viết bằng ngôn ngữ bậc cao cần qua
nhiều bước xử lý:
Dùng một (chương) trình soạn thảo (Editor) để soạn các lệnh trong
ngôn ngữ bậc cao. Chương trình viết ra gọi là mã nguồn (Source
code)
Dùng một trình dịch (Compiler) để kiểm tra lỗi cú pháp và dịch các
lệnh viết trong mã nguồn ra ngôn ngữ máy. Chương trình dịch ra từ
mã nguồn gọi là mã đối tượng (Object code)
Trình dịch thường đi kèm với một hoặc nhiều thư viện (Library)
chứa các đoạn mã hữu dụng đã được dịch sẵn dùng để phát triển
phần mềm. Nếu mã nguồn sử dụng chúng, trình liên kết (Linker) sẽ
tích hợp những mã viết sẵn trong thư viện vào mã đối tượng tạo
thành mã khả thi (Executable Code)
Mã khả thi có thể được nạp trực tiếp vào bộ nhớ và chạy độc lập,
không phụ thuộc vào Editor, Compiler hay Linker nữa.


12
Quy trình xử lý chương trình (tiếp)
Editor
Compiler
Source Code
Object Code Libraries
Linker
Executable Code

13
Quy trình phát triển phần mềm
Bài toán (Problem)
Phân tích (Analysis)
Thiết kế thuật toán (Algorithm Design)
Soạn chương trình (Coding)
Dịch (Compilation)
Liên kết (Linking)
Thực hiện (Execution)
Lỗi
Không lỗi
Release
Lỗi
Không lỗi
Thiết kế từ trên
xuống
(Top-down design)
Tinh chỉnh từng bước
(Step-wise refinement)
Tách biệt từng phần
(Modular

programming)
Lê Minh Hoàng

15
Nội dung bài học
Những khái niệm cơ bản về lập trình
Lịch sử ngôn ngữ lập trình Pascal
Xuất phát từ ALGOL
Trở thành chuẩn mực lập trình
Bị thay thế bởi C++
Sống lại bằng Object Pascal và Delphi
Cuộc chiến giữa Delphi và Visual C#
Làm quen với trình dịch Free Pascal
Giao diện
Hệ thống Menu
Các phím soạn thảo
Các phím tắt (Shortcut)

16
Lập trình
Một chương trình máy tính là một tập hợp các dòng lệnh
(statements) để chỉ thị cho máy tính thực hiện một nhiệm vụ
nào đó
Lập trình: Là quá trình viết các lệnh một cách có mục đích,
có kế hoạch để tạo ra chương trình
Công thức nấu ăn:
Nấu ăn theo công thức thì dễ hơn tạo ra một công thức nấu ăn mới
Có những công thức tốt và có những công thức tồi
Có những công thức dễ dàng làm theo và có những công thức
không dễ.

Có những công thức tạo ra món ăn ngon và có những công thức
tạo ra những thứ không ăn được
Người đầu bếp phải có kiến thức về sử dụng dụng cụ nấu ăn để
làm theo công thức
Lập trình cũng giống như vậy…

17
Lập trình (tiếp)
Để viết một chương trình, chúng ta phải học các ký hiệu,
các từ, và các luật cú pháp của ngôn ngữ lập trình.
Luật cú pháp cho biết cách viết dòng lệnh nào là hợp lệ
(được chấp nhận bởi ngôn ngữ lập trình), cách viết nào là
sai.
Ngôn ngữ lập trình: Là một tập các luật cú pháp, ký hiệu, và
từ khoá.
Luật ngữ nghĩa: Các luật cú pháp, từ khoá trong ngôn ngữ
lập trình bậc cao thường gợi nhớ nghĩa của dòng lệnh bằng
tiếng Anh.
and: và
or: hoặc
If x > 0 then <S>: Nếu x là số dương thì làm <S>
while a > b do <S>: Thực hiện <S> chừng nào vẫn thấy a > b

18
Pascal Programming Language
Ngôn ngữ lập trình Pascal được đặt tên theo tên
nhà toán học Pháp Blaise Pascal
Đặc điểm
Dễ học
Thích hợp để mô phỏng thuật toán

Viết chương trình dễ
Chương trình chạy nhanh
Định kiểu mạnh mẽ và luật cú pháp chặt chẽ. Hạn
chế lập trình viên viết những đoạn mã tồi
Blaise Pascal
1623-1662

19
Lịch sử: Nguồn gốc
ALGOL
Ngôn ngữ được phát kiến dành cho tính toán khoa học
Kỳ vọng: Ngôn ngữ độc lập với phần cứng và hệ điều
hành
Thất vọng: Quá khó để viết ra một trình dịch ALGOL với
điều kiện lúc đó.
Hạn chế: Thiếu trình dịch + Thiếu rất nhiều kiểu dữ liệu
cơ bản (như kiểu ký tự) và con trỏ
Giới khoa học và lập trình viên chuyển sang sử dụng
FORTRAN…
ALGOL không và không bao giờ được chấp nhận rộng
rãi và chỉ còn là ngôn ngữ để…mô tả thuật toán.

20
Lịch sử: Pascal ra đời
Wirth phát minh PASCAL
Vào những năm 1960s, một vài nhà khoa học máy tính vẫn cố gắng mở
rộng ALGOL. Trong số đó có Wirth (Swiss Federal Institute of Technology)
1971: Wirth đưa ra đặc tả về một ngôn ngữ có cấu trúc chặt chẽ và đặt tên
là PASCAL (Tên nhà toán học thế kỷ 17, người phát minh ra máy tính đầu
tiên…

Quan trọng hơn cả: Wirth viết luôn trình dịch PASCAL. Một trình dịch độc
lập phần cứng và hệ điều hành để dịch chương trình PASCAL ra mã đối
tượng. Khi chạy trên các máy tính và hệ điều hành khác nhau, chỉ cần một
chương trình nhỏ chuyển mã đối tượng thành mã khả thi. (Xem lại các khái
niệm mã đối tượng và mã khả thi ở đây).
Đặc tính của PASCAL
Hướng tới dữ liệu, định kiểu mạnh mẽ.
Cho phép người dùng tự định nghĩa những kiểu dữ liệu mới.
Đọc chương trình rất giống với ngôn ngữ tự nhiên (Tiếng Anh).
Chương trình PASCAL rất dễ hiểu.

21
Lịch sử: Pascal trở thành chuẩn
Đầu những năm 1980s, Pascal được sử dụng rộng rãi. Có 2 lý do:
Cơ quan kiểm tra giáo dục Mỹ quyết định đưa Khoa học máy tính
(Computer Science) vào nội dung thi, và ngôn ngữ lập trình được sử dụng
là Pascal. (Pascal trở thành ngôn ngữ chính thức tới năm 1999, sau đó
chuyển sang C++ 2 năm, và hiện tại là Java)
Một công ty là Borland International đưa ra thị trường Turbo Pascal (TP) -
một phần mềm dịch tích hợp Pascal. TP là một cuộc cách mạng:
TP có thay đổi một số thành phần trong Pascal chuẩn, làm cho ngôn ngữ tiện
dụng hơn.
Tốc độ tuyệt vời: Trên những máy tính chậm hơn khoảng 1000 lần máy tính hiện
nay, TP có thể dịch vài ngàn dòng lệnh trong 1 phút.
Pascal+TP trở thành chuẩn
PC Magazine sử dụng Pascal cùng với hợp ngữ để đăng các đoạn mã
nguồn.
Từ phiên bản 1.0 tới phiên bản 7.0. Borland liên tục mở rộng ngôn ngữ
Pascal. Phiên bản 7.0 là phiên bản mạnh và ổn định nhất.
Nói thêm: Người thiết kế TP là Anders Hejlsberg, chính là người thiết kế

hai công cụ phát triển nổi tiếng nhất hiện nay: Visual C# và Delphi.

22
Lịch sử: Thế giới thay đổi
Những năm 1970s
Dennis Ritchie và Brian Kernighan tại công ty AT&T và phòng thí nghiệm Bell sáng
tạo ngôn ngữ C - ngôn ngữ chính để phát triển hệ điều hành UNIX.
AT&T sau đó không thấy có thị trường cho nghiên cứu hệ điều hành, lấy UNIX cho
không các trường đại học với đầy đủ mã nguồn. Với giá = 0, UNIX được chấp nhận
rộng rãi trong các trường đại học để các sinh viên học kiến trúc hệ điều hành…
Để hiểu kiến trúc UNIX, phải học C để đọc mã nguồn UNIX. C tiến những bước
chậm và chắc vào thế giới lập trình. Nhưng so với C, Pascal vẫn là #1…
Pascal chính thức bị thay thế bởi C++
Tư duy lập trình thay đổi: Từ lập trình hướng cấu trúc (Structure-Oriented
Programming) sang hướng đối tượng (Object-Oriented Programming)
Vào đầu những năm 1980s, Bjarne Stroustrop tại phòng thí nghiệm Bell tích hợp
những đặc tả cho lập trình hướng đối tượng vào ngôn ngữ C, tạo ra ngôn ngữ C++
Tất cả lập trình viên đều nhận ra nhiều ưu điểm của lập trình OOP so với lập trình
cấu trúc, trong khi đó Pascal ra đời khi OOP chưa phổ biến…
TP chấm dứt phát triển: Borland tuyên bố “Sẽ không có Borland (Turbo) Pascal 8 mà
thay vào đó sẽ là Delphi”.

23
Lịch sử: Object Pascal vs. C#
Nhược điểm của ngôn ngữ C++
Quá nhiều ký hiệu, chương trình C++ khác biệt rất nhiều ngôn ngữ tự nhiên nên khó
đọc
Quá dễ dãi, C++ định kiểu yếu, chú trọng việc đưa ra những cú pháp tắt. Điều này
làm chương trình C++ ngắn bằng khoảng 60% so với Pascal, nhưng lại không hạn
chế được lập trình viên viết những mã nguy hiểm hoặc dễ gây nhầm lẫn.

Cơ quan kiểm tra giáo dục Mỹ khi đưa C++ vào các trường học đã phải bỏ bớt hoặc
sửa đổi một số đặc điểm của C++ được coi là “nguy hiểm” đối với sinh viên - những
người mới học lập trình.
Đối lập với nhược điểm này của C++ lại là đặc tính dễ hiểu, chặt chẽ, định kiểu
mạnh của Pascal…
Thế hệ ngôn ngữ mới
Những người phát triển Pascal: Pascal chỉ kém C++ ở phần lập trình hướng đối
tượng → Mượn tất cả đặc tả hướng đối tượng trong C++ đưa vào Pascal tạo ra
ngôn ngữ mới Object Pascal.
Những người phát triển C++: C++ kém Pascal chủ yếu do tính dễ dãi và khó hiểu →
Hạn chế bớt một số tính năng nguy hiểm của C++, tăng cường hệ thống báo lỗi, C#
ra đời.

24
Lịch sử: Delphi vs. Visual C#
Hai môi trường phát triển phần mềm dựa trên Object Pascal và C#. Cả
hai đều chạy trên MS Windows và .NET FrameWork.
Borland Delphi của Borland (Nay đổi tên CodeGear Delphi) dựa trên Object
Pascal.
Visual C# của Microsoft dựa trên C#.
So sánh
Lập trình viên: Cái gì mình đang dùng là #1
Người đã dùng cả hai: Khó có thể chỉ ra sự khác biệt lớn cả về tính năng
và tốc độ phần mềm được viết ra, chỉ khác nhau về ngôn ngữ (như English
và Français)
Ý kiến cá nhân:
Delphi hay hơn Visual C# ở tính dễ học và chương trình dễ đọc, thiết kế phần
mềm nhanh, dịch nhanh, hệ thống gỡ rối mạnh.
Visual C# ưu điểm hơn Delphi ở tính phổ biến và giá cả, được hỗ trợ bởi
Microsoft. (CodeGear RAD Studio: $3274; Microsoft Visual Studio: $799)


25
So, Why learn Pascal?
C and C++ are very symbolic languages…
{…} vs. begin…end
and very dangerous for students…
Type-casting and pointer arithmetic is common, making it easy to crash
programs and write in buffer overruns.
Another reason: Speed
Instead of several hours design graphic user interface in C++.
We can do 10 minutes in Delphi
The last reason:
Pascal was well-suited for teaching programming
Less overhead and fewer ways for students to get program into trouble.
Pascal is an official language of IOI
Answer in one sentence
Because it’s not scary like C, not dangerous like C++, and not abstract like
Java.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×