ngÔn ngỮ mÁy (computer languages)

90
NGÔN NGỮ MÁY (Computer Languages)

Upload: stone-matthews

Post on 02-Jan-2016

74 views

Category:

Documents


1 download

DESCRIPTION

NGÔN NGỮ MÁY (Computer Languages). Nội Dung. Mã máy thông qua ngôn ngữ tự nhiên Ngôn ngữ máy tính Hợp ngữ Ngôn ngữ cấp cao Ngôn ngữ lập trình hướng đối tượng Một số ngôn ngữ lập trình cấp cao Các ngôn ngữ lập trình cấp cao khác Đặc trưng của một ngôn ngữ lập trình - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: NGÔN NGỮ MÁY (Computer Languages)

NGÔN NGỮ MÁY(Computer Languages)

Page 2: NGÔN NGỮ MÁY (Computer Languages)

Mã máy thông qua ngôn ngữ tự nhiên Ngôn ngữ máy tính

Hợp ngữ Ngôn ngữ cấp cao Ngôn ngữ lập trình hướng đối tượng

Một số ngôn ngữ lập trình cấp cao Các ngôn ngữ lập trình cấp cao khác Đặc trưng của một ngôn ngữ lập trình Các khái niệm liện quan khác

Nội Dung

Page 3: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ máy tính dùng để truyền đạt thông tin giữa người và máy tính

Khác biệt chủ yếu giữa ngôn ngữ tự nhiên và ngôn ngữ máy tính là ngôn ngữ tự nhiên có từ vựng lớn, còn ngôn ngữ máy tính sử dụng rất hạn chế số lượng từ vựng.

Ngôn ngữ máy tính phân thành các loại sau :

1. Ngôn ngữ máy tính

2. Hợp ngữ

3. Ngôn ngữ cấp cao

Mã máy thông qua ngôn ngữ tự nhiên

Page 4: NGÔN NGỮ MÁY (Computer Languages)

Là ngôn ngữ mà máy tính có thể hiểu được mà không cần sử dụng chương trình dịch.

Biểu diễn các chỉ thị (lệnh máy) dưới dạng các chuỗi nhị phân, thập phân.

Ngôn ngữ của máy tính

Page 5: NGÔN NGỮ MÁY (Computer Languages)

• Lệnh máy:– Mỗi lệnh máy chỉ thực hiện một tác vụ rất đơn giản

như 1 phép tính số học hay 1 hoạt động đọc/ghi vùng nhớ/thanh ghi CPU.

– Một lệnh máy bao gôm 2 phần : mã lệnh và toán hạng. • Mã lệnh (opcode) là một chuỗi các bit 0 và 1. Mỗi chuỗi bit

miêu tả 1 số, mỗi số miêu tả 1 lệnh máy cụ thể.

• Toán hạng xác định dữ liệu nào sẽ bị xử lý bởi lệnh máy

tương ứng. Toán hạng cũng là chuỗi bit nhị phân nhưng

định dạng và ngữ nghĩa của nó phụ thuộc vào từng lệnh

máy cụ thể.

Ngôn ngữ của máy tính

Page 6: NGÔN NGỮ MÁY (Computer Languages)

Các toán hạng có trong tập lệnh của máy tính: 1. Phép toán số học

2. Phép toán logic

3. Các thao tác rẽ nhánh.

4. Thao tác để di chuyển dữ liệu giữa vị trí bộ nhớ và thanh ghi.

5. Thao tác di chuyển dữ liệu từ các thiết bị nhập/xuất của máy tính.

Ngôn ngữ của máy tính

Page 7: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ của máy tính

Page 8: NGÔN NGỮ MÁY (Computer Languages)

Ví dụ: Giả sử có 2 biến nguyên 16 bit, biến nguyên thứ nhât (i) nằm ở vị trí nhớ 200h, biến nguyên thứ 2 (j) nằm ở vị trí nhớ 202h. Đọan lệnh máy (Intel 80x86) sau đây sẽ thiết lập nội dung cho biến i = 5 rồi thiết lập nội dung của biến j theo công thức i+10 :

10111000 00000101 00000000 b8 05 00

10100011 00000000 00000002 a3 00 02

10100001 00000000 00000002 a1 00 02

00000101 00001010 00000000 05 0a 00

10100011 00000010 00000010 a3 02 02

Ngôn ngữ của máy tính

Dạng nhị phân Dạng Hexa

Page 9: NGÔN NGỮ MÁY (Computer Languages)

Ưu điểm và hạn chế của ngôn ngữ máy tính: Ưu:

– Thực thi rất nhanh vì máy tính thực hiện trực tiếp từng câu lệnh không cần phải có chương trình thông dịch

Khuyết:– Phụ thuộc vào máy– Khó viết chương trình– Dễ bị lỗi– Khó sửa đổi– Lập trình viên cần ghi mã số cho từng lệnh. – Lập trình viên cần ghi vị trí lưu trữ của lệnh và dữ liệu ở

dạng số khi lập chương trình. – Phải hiểu rõ về phần cứng

Ngôn ngữ của máy tính

Page 10: NGÔN NGỮ MÁY (Computer Languages)

Hợp ngữ được giới thiệu vào năm 1952. Là ngôn ngữ lập trình mà nó khắc phục những hạn chế

của ngôn ngữ máy. Lập trình bằng hợp ngữ có các đặc điểm sau:

Sử dụng mã gợi nhớ thay cho mã bằng số để biểu diễn các lệnh trong tập lệnh

Ví dụ: ADD thay cho (1110 or 14), SUB thay cho (1111 or 15)…

Cho phép vị trí lưu trữ được biểu diễn dưới dạng địa chỉ ký tự số thay cho địa chỉ số.

Ví dụ: vị trí bộ nhớ 1000, 1001, 1002 có thể được mô tả bằng FRST, SCND và ANSR.

Cung cấp các lệnh giả trong tập lệnhSTART PROGRAM AT 0000

START DATA AT 1000

SET ASIDE AN ADDRESS FOR FRST

SET ASIDE AN ADDRESS FOR SCND

SET ASIDE AN ADDRESS FOR ANSR

Hợp ngữ -Assembly

Page 11: NGÔN NGỮ MÁY (Computer Languages)

Hợp ngữ -Assembly

Ví dụ: Ngôn ngữ máy dạng nhị phân NNM dạng Hex NN Assembly

10111000 00000101 00000000 b8 05 00 mov ax, 5

10100011 00000000 00000002 a3 00 02 mov [200], ax

10100001 00000000 00000002 a1 00 02 mov ax, [200]

00000101 00001010 00000000 05 0a 00 add ax, 10

10100011 00000010 00000010 a3 02 02 mov [202],ax

Page 12: NGÔN NGỮ MÁY (Computer Languages)

Trình dịch hợp ngữ của hệ thống máy tính được cung cấp bởi nhà sản xuất máy tính.

Là phần mềm dùng để chuyển các chương trình bằng hợp ngữ sang chương trình mã máy

Hợp ngữ - Assembler

Page 13: NGÔN NGỮ MÁY (Computer Languages)

Ví dụ: Một vài lệnh được hỗ trợ bởi máy tính

Hợp ngữ - Assembler

Mnemonic Opcode Meaning

HLTCLAADDSUBSTA

0010141530

Halt, để kết thúc chương trìnhXóa và thêm vào thanh ghi AThêm nội dung vào thanh ghi ATrừ nội dung của thanh ghi A Lưu trữ thanh ghi A

Page 14: NGÔN NGỮ MÁY (Computer Languages)

Ví dụ: Chương trình cộng 2 số và lưu kết quả:

START PROGRAM AT 0000

START DATA AT 1000

SET ASIDE AN ADDRESS FOR FRST

SET ASIDE AN ADDRESS FOR SCND

SET ASIDE AN ADDRESS FOR ANSR

CLA FRST

ADD SCND

STA ANSR

HLT

Hợp ngữ - Assembler

Page 15: NGÔN NGỮ MÁY (Computer Languages)

Thuận lợi Dễ hiểu và dễ sử dụng

Dễ định vị hơn và sửa lỗi chính xác

Dễ sửa đổi chương trình

Không quan tâm đến địa chỉ

Dễ dàng xác định đúng vị trí

Hiệu xuất cao hơn ngôn ngữ máy tính

Hợp ngữ - Assembler

Page 16: NGÔN NGỮ MÁY (Computer Languages)

Hạn chế: Phụ thuộc vào máy Người lập trình phải có kiến thức về phần cứng Các lệnh chỉ được viết ở mức mã máy nên viết

chương trình bằng hợp ngữ vẫn còn mất thời gian và không dễ dàng lắm.

Hợp ngữ - Assembler

Page 17: NGÔN NGỮ MÁY (Computer Languages)

Là ngôn ngữ máy chỉ có hai cấu trúc điều khiển cơ bản để thực hiện các lệnh: tuần tự và nhảy.

Cấu trúc tuần tự: sau khi thực hiện xong lệnh hiện hành, máy sẽ thi hành tiếp lệnh đi ngay sau lệnh hiện hành trong chương trình.

Lệnh nhảy cho phép người lập trình xác định lệnh kế tiếp được thi hành ở đâu trong chương trình.

Ngôn ngữ lập trình cấp thấp

Page 18: NGÔN NGỮ MÁY (Computer Languages)

Là ngôn ngữ cho phép dùng nhiều kiểu dữ liệu và nhiều cấu trúc điều khiển hơn so với ngôn ngữ cấp thấp, đồng thời cách biểu diễn các lệnh cũng gần với ngôn ngữ tự nhiên.

Các loại ngôn ngữ lập trình cấp cao :– Ngôn ngữ đa mục đích: Basic, C, C++, C#, Java, Fortran,

Pascal

– Ngôn ngữ lập trình stack : TrueType, Postscript,...

– Lập trình khai báo : C, Pascal,...

– Ngôn ngữ lập trình logic, lập trình thủ tục & lập trình hàm : Prolog, Lisp,..

– Ngôn ngữ lập trình hướng đối tượng : C++, C#, Java,..

Ngôn ngữ cấp cao

Page 19: NGÔN NGỮ MÁY (Computer Languages)

Đặc điểm của ngôn ngữ cấp cao: Độc lập với máy Gần với ngôn ngữ tự nhiên Không đòi hỏi lập trình viên biết về cấu trúc bên trong

của máy tính. Không xử lý mã máy. Cho phép máy tính giải quyết vấn đề ngay cả khi

người dùng không phải là chuyên gia lập trình.

Ngôn ngữ cấp cao

Page 20: NGÔN NGỮ MÁY (Computer Languages)

Ví dụ:• Ngôn ngữ máy dạng nhị phân NNM dạng Hex NN Assembly

10111000 00000101 00000000 b8 05 00 mov ax, 5

10100011 00000000 00000002 a3 00 02 mov [200], ax

10100001 00000000 00000002 a1 00 02 mov ax, [200]

00000101 00001010 00000000 05 0a 00 add ax, 10

10100011 00000010 00000010 a3 02 02 mov [202],ax

• Ngôn ngữ cấp cao C :short i, j; // khai báo 2 biên i, j thuộc kiểu số nguyên 16 bit

i = 5; // chứa 5 vào biến i

j = i +10; // chứa kết quả tính công thức i + 10 vào biến j

Ngôn ngữ cấp cao

Page 21: NGÔN NGỮ MÁY (Computer Languages)

Trình biên dịch (compiler) là 1 chương trình dịch, dùng để dịch chương trình bằng ngôn ngữ cấp cao thành ngôn

ngữ máy tính trước khi thi hành trên máy tính. Dịch tập hợp các chỉ thị từ mã máy thành các lệnh

trong bất kỳ ngôn ngữ cấp cao nào.

Ngôn ngữ cấp cao - Compiler

Quá trình dịch của một trình biên dịch

Compiler

Page 22: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ cấp cao - Compiler

Minh họa quá trình biên dịch lại mã nguồn của chương trình

Page 23: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ cấp cao - Compiler

Mỗi máy tính đòi hỏi có trình biên dịch riêng biệt cho mỗi ngôn ngữ cấp cao khác nhau.

Trình biên dịch cho ngôn ngữ L1

Trình biên dịch cho ngôn ngữ L2

Chương trình P1 bằng ngôn ngữ cấp cao L1

Chương trình P2 bằng ngôn ngữ cấp cao L2

Mã máy cho L1

Mã máy cho L2

Một máy tính hỗ trợ ngôn ngữ L1 và L2

Minh họa yêu cầu cho một trình biên dịch riêng biệt cho mỗi ngôn ngữ cấp cao được cung cấp bởi một máy tính

Page 24: NGÔN NGỮ MÁY (Computer Languages)

Ngoài việc biên dịch chương trình, trình biên dịch còn bắt những lỗi về cú pháp: Các ký tự không hợp lệ Kết hợp các ký tự không hợp lệ Trình tự của lệnh không đúng Sử dụng tên biến không đúng

Lỗi cú pháp (Syntax errors)

Page 25: NGÔN NGỮ MÁY (Computer Languages)

Quá trình xóa lỗi cú pháp

Page 26: NGÔN NGỮ MÁY (Computer Languages)

Trình thông dịch (interpreter): được sử dụng để phiên dịch các chương trình được viết bằng ngôn ngữ cấp cao.

Trình thông dịch lấy các lệnh của một chương trình ngôn ngữ cấp cao dịch sang các tập lệnh của ngôn ngữ máy và sau đó thực thi các tập lệnh bằng ngôn ngữ máy và đưa ra kết quả.

Ngôn ngữ cấp cao - Interpreter

Vai trò của trình thông dịch

Page 27: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ cấp cao

Trình biên dịch (compiler) Trình thông dịch (interpreter)

Chuyển toàn bộ mã nguồn chương trình vào một đối tượng chương trình và không tham gia vào việc thực thi, kết quả xuất là một đối tượng chương trình.

Chuyển toàn bộ mã nguồn chương trình vào một đối tượng chương trình và tham gia vào việc thực thi, kết quả xuất là kết quả thực thi của chương trình.

Chạy nhanh vì có chương đích nên phải biên dịch lại

Chạy chậm vì không có chương đích nên phải thông dịch lại.

Khó viết Dễ viết, yêu cầu bộ nhớ ít

Lỗi cú pháp trong của chương trình được phát hiện không được lập trình viên sửa ngay khi đang biên dịch.

Lỗi cú pháp trong của chương trình được phát hiện thì sẽ được lập trình viên sửa ngay khi đang thông dịch.

Page 28: NGÔN NGỮ MÁY (Computer Languages)

Với những phần mềm lớn, việc lưu trữ tất cả các dòng lệnh của chương trình trong một tập tin nguồn sẽ gây ra: Khó khăn khi có nhiều lập trình viên cùng

phát triển một chương trình Bất kỳ sự thay đổi trong chương trình nguồn

thì yêu cầu toàn bộ chương trình nguồn phải được biên dịch lại

Ngôn ngữ cấp cao - Linker

Page 29: NGÔN NGỮ MÁY (Computer Languages)

Giải quyết: Tổ chức chương trình thành các module được

áp dụng cho các chương trình lớn Các module được lưu dưới dạng các file nguồn. Mỗi file nguồn được lưu trữ và biên dịch độc lập

để tạo ra các đối tượng tập tin chương trình tương ứng.

Linker là một phần mềm được sử dụng để kết hợp tất cả các đối tượng tập tin chương trình, tạo ra tập tin thực thi cuối cùng.

Ngôn ngữ cấp cao - Linker

Page 30: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ cấp cao - Linker

Page 31: NGÔN NGỮ MÁY (Computer Languages)

Thuận lợi của ngôn ngữ cấp cao: Dễ sử dụng trên từng máy, độc lập với máy Dễ dàng đọc, dễ hiểu và dễ sử dụng Lỗi ít Chi phí viết chương trình thấp. Dễ dàng lưu trữ và dễ bảo trì

Ngôn ngữ cấp cao

Page 32: NGÔN NGỮ MÁY (Computer Languages)

Hạn chế của ngôn ngữ cấp cao: Hiệu quả thấp hơn vì thời gian thực thi lâu và tốn bộ

nhớ Ít linh hoạt hơn vì không có cơ chế kiểm soát CPU và

bộ nhớ

Ngôn ngữ cấp cao

Page 33: NGÔN NGỮ MÁY (Computer Languages)

Lập trình hướng đối (object-oriented programming-OOP) Khái niệm về OOP lần đầu tiên được giới thiệu vào năm

1967 bởi các nhà phát triển ngôn ngữ lập trình có tên Simula-67 .

OOP phổ biến vào những năm 1980 với sự phát triển của ngôn ngữ lập trình khác có tên Smalltalk, từ đó khái niệm OOP được sử dụng rộng rãi.

Ngôn ngữ lập trình hướng đối tượng(OOP)

Page 34: NGÔN NGỮ MÁY (Computer Languages)

Lập trình hướng đối tượng(OOP) là gì? Là ngôn ngữ lập trình mô phỏng các vấn đề của thế giới

thực trên máy tính. Cốt lõi của OOP là giải quyết vấn đề bằng cách xác định các

đối tượng thế giới thực và xử lý yêu cầu của các đối tượng. Làm giảm nhẹ các thao tác viết mã cho người lập trình, cho

phép họ tạo ra các ứng dụng mà các yếu tố bên ngoài có thể tương tác với các chương trình.

Ngôn ngữ lập trình hướng đối tượng(OOP)

Page 35: NGÔN NGỮ MÁY (Computer Languages)

Các khái niệm cơ bản

1. Đối tượng

Đối tượng đại diện cho một thực thể trong thế giới thật.

Ví dụ: 1 ô tô, 1 con người, 1 hình tròn, 1 khoản tiền Mỗi đối tượng bao gồm một bộ các thủ tục (gọi là phương

thức – xác định đối tượng làm cái gì) và một số dữ liệu (thuộc tính – xác định đối tượng).

Mỗi đối tượng có một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó.

Mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu (bên trong của nó), và gửi ra hay trả lời đến các đối tượng khác hay đến môi trường.

Ngôn ngữ lập trình hướng đối tượng(OOP)

Page 36: NGÔN NGỮ MÁY (Computer Languages)

1. Đối tượng (Object)

Ngôn ngữ lập trình hướng đối tượng(OOP)

Margaret:

date of birth: 1980/03/03

position: Teller

Transaction 487:

amount: 200.00time: 2001/09/01 14:30

Greg:

date of birth: 1970/01/01address: 75 Object Dr.

Mortgage Account 29865:

balance: 198760.00

opened: 2000/08/12property: 75 Object Dr.

Instant Teller 876:

location: Java Valley Cafe

Savings Account 12876:

balance: 1976.32opened: 1997/03/03

Jane:

date of birth: 1955/02/02

position: Manageraddress: 99 UML St.

address: 150 C++ Rd.

Page 37: NGÔN NGỮ MÁY (Computer Languages)

2. Phương thức (Method) Định nghĩa 1 tập hợp các thao tác mà đối tượng sẽ thực

hiện khi phương thức nhận được thông báo bởi đối tượng.

Ví dụ – Đối tượng: XeVespa

• Thuộc tính: màu đỏ, xe hãng piaggio(Ý), xe cổ, …• Phương thức: chạy, chết máy, hết xăng, …

Ngôn ngữ lập trình hướng đối tượng(OOP)

Page 38: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ lập trình hướng đối tượng(OOP)

Mô hình của 1 đối tượng sử dụng trong OOP

Page 39: NGÔN NGỮ MÁY (Computer Languages)

3. Thông báo (Message) Là cơ chế để hỗ trợ giao tiếp giữa các đối tượng. Tất cả các máy tính trong một chương trình được viết

bằng một ngôn ngữ OOP được thực hiện bằng cách gửi thông báo cho một đối tượng để gọi các phương thức thực thi.

Ngôn ngữ lập trình hướng đối tượng(OOP)

Page 40: NGÔN NGỮ MÁY (Computer Languages)

4. Lớp (Class) Lớp là một khái niệm trừu tượng, là sự mô tả của một hay

nhiều đối tượng giống nhau trong hệ thống. Một đối tượng là một thể hiện của một lớp.

Ví dụ: Nhân Viên, Con Người, Xe Hơi …. Lớp được dùng để biểu diễn đối tượng cho nên lớp cũng bao

gồm các thuộc tính và các phương thức. Lớp có 2 dạng: lớp biến và lớp thực thể.

• Ví dụ: – "số nguyên" là một lớp, "8,9,234,…" là

các đối tượng của lớp "số nguyên".

– "Người-1" và "Người-2" là hai đối tượng của lớp

"Người".

Ngôn ngữ lập trình hướng đối tượng(OOP)

Page 41: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ lập trình hướng đối tượng(OOP)

Page 42: NGÔN NGỮ MÁY (Computer Languages)

Bài tập

Xác định lớp và đối tượnga) General Motors b) Automoible company

c) Student d) Computer Science Student

e) Mary Smith f) Game

g) Board Game h) Chess

i) Car j) Mazda car

Page 43: NGÔN NGỮ MÁY (Computer Languages)

5. Thừa kế (Inheritance)• Là một kỹ thuật được sử dụng để chia sẻ mã lệnh và

hành vi (phương thức) giữa các đối tượng.• Cho phép một lập trình viên tái sử dụng các hành vi của

một lớp khi định nghĩa lớp mới.• Lớp con có thể kế thừa từ nhiều lớp cha. Đây gọi là đa

thừa kế.

Ngôn ngữ lập trình hướng đối tượng(OOP)

Account

MortgageAccountSavingsAccount ChequingAccount

Page 44: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ lập trình hướng đối tượng(OOP)

Ví dụ về cấu trúc thừa kế của lớp

Page 45: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ lập trình hướng đối tượng(OOP)

Page 46: NGÔN NGỮ MÁY (Computer Languages)

Chương trình hướng thủ tục

• Ngôn ngữ lập trình hướng thủ tục quy ước sử dụng thủ tục trừu tượng mà thứ tự đóng gói một dãy các lệnh vào trong một thủ tục.

• Vai trò của các thủ tục là chuyển đổi dữ liệu đầu vào được xác định bởi các tham số thành các giá trị.

• Mô hình của ngôn ngữ lập trình hướng thủ tục có nguyên tắc tổ chức mạnh mẽ để quản lý các hành động và thuật toán nhưng yếu kém về nguyên tắc tổ chức quản lý dữ liệu dùng chung.

Page 47: NGÔN NGỮ MÁY (Computer Languages)

Ngôn ngữ lập trình hướng đối tượng • Đóng gói dữ liệu cũng như thứ tự các thao tác vào

trong các thực thể trừu tượng gọi là đối tượng. • Cung cấp nhiều công cụ tiện dụng và hữu ích hơn lập

trình hướng thủ tục.• Vai trò của các đối tượng là phục vụ như một kho dữ

liệu và đáp ứng thực hiện các hành động được yêu cầu.

• Mô hình của ngôn ngữ lập trình hướng đối tượng thì mạnh về tổ chức, quản lý các hành động, thuật toán và quản lý cả dữ liệu dùng chung.

• Kế thừa cung cấp thêm sức mạnh cho phép các lớp được phân loại theo các thuộc tính và theo thừa số để tách thành nhiều lớp phụ vào một siêu lớp.

Page 48: NGÔN NGỮ MÁY (Computer Languages)

Chương trình hướng đối tượng

Thuận lợi:Khả năng mô hình hóa gần với tự nhiênThiết kế theo hướng modularTrừu tượng hóaLiên kết độngTái sử dụng mã lệnhDễ bảo trì

Page 49: NGÔN NGỮ MÁY (Computer Languages)

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

1) FORTRAN2) COBOL 3) BASIC4) PASCAL 5) PL/1

Page 50: NGÔN NGỮ MÁY (Computer Languages)

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

1. FORTRAN - FORmula TRANslation.• Được thiết kế để giải quyết các vấn đề về khoa học

và kỹ thuật• Một số tính năng quan trọng của FORTRAN77 là:

1. Xử lý chuỗi ký tự.2. Khởi tạo các vòng lặp rõ ràng hơn.3. Câu lệnh IF với một lựa chọn ELSE.

Page 51: NGÔN NGỮ MÁY (Computer Languages)

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

1. FORTRAN• Một số tính năng quan trọng của FORTRAN 90:

1. Xây dựng hàm cho các toán tử như DOTPRODUCT, MATMUL, TRANSPOSE, MAXVAL, M1NV AL, PRODUCT, và SUM.

2. Tự động phân vùng và phân chia vị trí mảng hỗ trợ dữ liệu

3. Sử dụng biến con trỏ cho phép truy xuất các địa chỉ gián tiếp cung cấp một phương thức động quản lý lưu trữ.

4. Thêm một số lệnh để dễ dàng lập trình như CASE, CYCLE, EXIT

Page 52: NGÔN NGỮ MÁY (Computer Languages)

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

C FORTRAN PROGRAM TO COMPUTEC THE SUM OF 10 NUMBERS

SUM = 0 DO 50 I = 1, 10READ (5, 10)NSUM = SUM + N

50 CONTINUEWRITE (6, 20) SUM

10 FORMAT (F6.2)20 FORMAT (1X, ‘THE SUM OF GIVEN

NUMBERS = ’,F10.2STOPEND

Ví dụ về chương trình FORTRAN

Page 53: NGÔN NGỮ MÁY (Computer Languages)

2. COBOL - COmmon Business Oriented Language. Định dạng miễn phí, cho phép nhập lệnh vào bất cứ vị trí nào

trên dòng. Các chú thích trên dòng. Một số loại dữ liệu mới. Cho phép người lập trình viết các chương trình đáp ứng được

với các môi trường khác nhau. Dữ liệu tự động xác nhận. Gọi lệnh cải tiến. Chia sẻ tập tin và khóa các bản ghi Các tính năng hướng đối tượng: lớp, đối tượng, thừa kế,...

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

Page 54: NGÔN NGỮ MÁY (Computer Languages)

Các ràng buộc được chỉ định để tự động chấp nhận dữ liệu

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

Page 55: NGÔN NGỮ MÁY (Computer Languages)

Các thành phần của chương trình COBOL:

1. Phần xác minh: xác định các thông tin về chương trình.

2. Phần môi trường: xác định máy tính và các thiết bị ngoại vi được sử dụng để biên dịch và thực thi các chương trình.

3. Phần dữ liệu: xác định cấu trúc và định dạng của các tập tin dữ liệu đầu vào và đầu ra cũng như tất cả các vùng lưu trữ được sử dụng để lưu trữ những kết quả trung gian và các giá trị khác trong quá trình xử lý.

4. Phần thủ tục: chứa các các lệnh tuần tự được thực hiện bởi chương trình.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

Page 56: NGÔN NGỮ MÁY (Computer Languages)
Page 57: NGÔN NGỮ MÁY (Computer Languages)

COBOL thường gọi tắt là ngôn ngữ “self –documenting” có các tính năng của sau đây:

1. Các câu lệnh tương tự như tiếng anh.

2. Cấu trúc câu và đoạn của nó giống với tiếng anh.

3. Chiều dài tối đa của tên trường là 30 ký tự. Với chiều dài của tên lên đến 30 ký tự, tên có thể nhận diện chính xác các lĩnh vực và mục đích của nó.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

Page 58: NGÔN NGỮ MÁY (Computer Languages)

3) Basic - Beginners All-purpose Symbolic Instruction Code.

BASIC được phát triển vào năm 1963 bởi các giáo sư John Kemeny và Thomas Kurtz thuộc đại học Darmouth ,Mỹ

Các đặc tính của BASIC:1. Sử dụng các thiết bị đầu cuối như là phương pháp truy cập

vào máy tính.

2. Được thiết kế như một ngôn ngữ thông dịch để các lập trình viên có thể tạo ra, chạy, kiểm tra và gỡ lỗi chương trình.

3. Được thiết kế với rất ít câu lệnh, quy tắc cú pháp có thể học và sử dụng dễ dàng.

4. Bộ dịch ngôn ngữ là thông dịch cho phép lập trình viên kiểm tra lỗi cú pháp và sửa nó ngay khi chương trình được nhập vào.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

Page 59: NGÔN NGỮ MÁY (Computer Languages)

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

5 REM PROGRAM TO COMPUTE 6 REM THE SUM OF 10 NUMBERS10 LETS = 020 FOR I = 1 TO 1030 READ N40 LET S=S + N50 NEXT I60 PRINT "THE SUM OF GIVEN NUMBERS = "; S70 DATA 4,20,15,32,4880 DATA 12,3,9, 14,4490 END;

Một chương trình Basic cơ bản

Page 60: NGÔN NGỮ MÁY (Computer Languages)

4) Pascal:Được đặt theo tên nhà toán học nổi tiếng người Pháp ở

thế kỷ 17, Blaise Pascal, ngôn ngữ này được tạo ra năm 1971 bởi giáo sư Nicklaus Wirth của Viện Công nghệ liên bang ở Zurich, Thụy Sĩ.

Pascal được phát triển dựa trên các khái niệm liên quan đến cấu trúc chương trình, đặc biệt biểu thức điều khiển và cấu trúc lặp.

Để tạo ra chương trình có cấu trúc, các chương trình Pascal gồm nhiều khối. Mỗi khối bắt đầu bằng BEGIN và kết thúc bằng END

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

Page 61: NGÔN NGỮ MÁY (Computer Languages)

Pascal được sử dụng để giảng dạy cho những người mới bắt đầu lập trình

Pascal đã được chuẩn hóa theo chuẩn ANSI vào năm 1983.

Pascal phù hợp cho cả những ứng dụng khoa học và kinh doanh bởi vì nó có những tính năng để thao tác không chỉ với các con số mà còn vectors, ma trận, chuỗi các ký tự, tập hợp, bản nghi, tập tin và danh sách chương trình

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

Page 62: NGÔN NGỮ MÁY (Computer Languages)

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

PROGRAM SUMNUMS (INPUT, OUTPUT);(* PROGRAM TO COMPUTE THE SUM OF 10 NUMBERS *)(* DECLARATION OF VARIABLES *)VAR SUM, N : REAL;VAR I: INTEGER;(*MAIN PROGRAM LOGIC STARTS HERE *)BEGIN

SUM:= 0;FOR I:= 1 TO 10 DOBE GIN

READ (N);SUM:= SUM + N;

END;WRITELN (“THE SUM OF GIVEN NUMBERS =”, SUM);

END

Page 63: NGÔN NGỮ MÁY (Computer Languages)

5) PL / 1 - “Programming Language One”.

Được thiết kế bởi IBM vào năm 1964. Sau đó được chuẩn hóa theo chuẩn ANSI vào năm 1976

• Mục tiêu chính của các nhà thiết kế là thiết kế một ngôn ngữ thông dụng có thể được sử dụng cho bất cứ loại ứng dụng nào

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

Page 64: NGÔN NGỮ MÁY (Computer Languages)

5) PL / 1 - “Programming Language One”.

• Các tính năng của PL/1 để:1. Để lập trình các ứng dụng kinh doanh và ứng dụng khoa học.

2. Các tính năng khác như là thao tác với chuỗi ký tự, xử lý danh sách, kiểu dữ liệu con trỏ, thực thi các tác vụ đông thời và xử lý các trường hợp ngoại lệ cho các chương trình hệ thống và các loại ứng dụng khác

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

Page 65: NGÔN NGỮ MÁY (Computer Languages)

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO

SUMNUMS:PROCEDURE (MAIN); /*PROGRAM TO COMPUTE THE SUM OF 10 NUMBERS */

DECLARE (SUM, N) FIXED; DECLARE I FIXED.SUM = 0;DO I=1 TO 10;GET(N);

Ví dụ của chương trình PL/1

Page 66: NGÔN NGỮ MÁY (Computer Languages)

C and C++

• Ngôn ngữ C được phát triển năm 1972 tại phòng thí nghiệm Bell của AT & T, Mỹ bởi Dennis Ritchie và Brian Kemiglian.

• Mục tiêu của họ là phát triển một ngôn ngữ có những ưu điểm của ngôn ngữ lập trình cấp cao với hiệu quả của ngôn ngữ máy.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 67: NGÔN NGỮ MÁY (Computer Languages)

1) C and C++

1. Được phát triển như là một ngôn ngữ biên dịch.

2. Hỗ trợ con trỏ với các toán tử con trỏ. Tính năng này cho phép các nhà lập trình trực tiếp truy cập vào địa chỉ bộ nhớ.

3. Hỗ trợ các kiểu dữ liệu do người dùng định nghĩa.

4. Hỗ trợ các khái niệm lập trình modular và cấu trúc.

5. Hỗ trợ một thư viện phong phú các hàm chức năng, các lập trình viên có thể sử dụng trực tiếp cho các mã của các ứng dụng.

6. Là ngôn ngữ nhỏ và ngắn gọn chỉ cung cấp những tính năng cần thiết, một chương trình C có thể được phiên dịch bởi bộ chuyển đổi sang mã máy một cách hiệu quả

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 68: NGÔN NGỮ MÁY (Computer Languages)

C+ + được phát triển bởi Bjarne Stroustrup tại phòng thí nghiệm Bell vào đầu những năm 1980.

C++ chứa tất cả các yếu tố cơ bản của các ngôn ngữ C, nhưng được mở rộng thêm tính năng lập trình hướng đối tượng.

C+ + khó học hơn so với C.

C+ + hoàn toàn tương thích với C.

Chương trình C có thể được biên dịch như là chương trình C++

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 69: NGÔN NGỮ MÁY (Computer Languages)

2) JavaJava là một ngôn ngữ chính được sử dụng cho các ứng dụng

dựa trên Internet. Được phát triển tại Sun Microsystems vào năm 1991 bởi một nhóm do James Gosling lãnh đạo.

Java được công bố chính thức vào tháng 5 năm 1995, và phiên bản phát hành thương mại đầu tiên đã được thực hiện trong năm 1996.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 70: NGÔN NGỮ MÁY (Computer Languages)

Java có các tính năng sau đây :

1. Chỉ biên dịch một lần, các chương trình Java được biên dịch máy byte code độc lập và được thông dịch bởi hệ thống “Java Runtime” tại thời gian thực thi của chương trình

2. Java đơn giản, dễ cài đặt và dễ sử dụng.

3. Java không hỗ trợ kiểu con trỏ và đa thừa kế. Do đó, Java được coi là một ngôn ngữ lập trình hướng đối tượng hoàn toàn

4. Việc biên dịch được thực hiện bởi máy độc lập.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 71: NGÔN NGỮ MÁY (Computer Languages)

3) Ada• Ada là một ngôn ngữ đa mục đích được phát triển và sử dụng

chủ yếu bởi US Department of Defense (Doo) dành cho các ứng dụng quân sự.

• Được phát triển vào năm 1980 tại công ty máy tính Honeywell do một nhóm các nhà khoa học dẫn đầu bởi Ichbiah

• Ada được chuẩn hóa theo chuẩn của ANSI vào năm 1983.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 72: NGÔN NGỮ MÁY (Computer Languages)

Các tính năng của Ada:

1. Phù hợp cho việc viết các ứng dụng đa tiến trình. Thường dùng trong các ứng dụng quân sự.

2. Có khả năng xử lý lỗi tốt.

3. Hỗ trợ việc sử dụng các dữ liệu trừu tượng trong việc thiết kế chương trình.

4. Các thủ tục có thể tái sử dụng một cách dễ dàng.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 73: NGÔN NGỮ MÁY (Computer Languages)

4) ALGOL

ALGOL viết tắt của Ngôn ngữ ALG.Orithmic.

ALGOL được thiết kế chủ yếu đặc tả các Thuật toán về khoa học tự nhiên thuộc lãnh vực ứng dụng máy tính tại thời điểm đó.

Được thiết kế bởi một nhóm gồm các nhà khoa học và toán học từ Châu Âu và Hoa Kỳ.

ALGOL 58 là phiên bản đầu tiên được phát hành năm 1958.

Mới nhất và mạnh nhất trong các phiên bản là ALGOL 68 được phát hành vào năm 1968.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 74: NGÔN NGỮ MÁY (Computer Languages)

4) ALGOL

Một số tính năng chính của ALGOL:

1. Cho phép đặt tên các biến với chiều dài bất kỳ.

2. Cho phép mảng có nhiều chiều.

3. Cho phép lập trình viên xác định giới hạn thấp nhất của mảng.

4. Hỗ trợ câu lệnh IF lồng nhau.

5. Có vòng lặp “FOR” trong FORTRAN'S lại là “DO”, nhưng nó cũng có một biểu thức"do" cho phép sắp xếp những tiến trình con với những tham số.

6. Hình thức hóa khái niệm kiểu dữ liệu.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 75: NGÔN NGỮ MÁY (Computer Languages)

4) ALGOL

7. Các lệnh ghép thành một khối lệnh.

8. Cặp Begin _End được ghép thành 1 khối trong đó các biến là các biến cục bộ.

9. Cho phép các mảng động.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 76: NGÔN NGỮ MÁY (Computer Languages)

4) ALGOL

ALGOL là một ngôn ngữ lập trình không phổ biến Với những tính năng rộng lớn và linh hoạt, sự phát triển

của một chương trình dịch cho ngôn ngữ đã trở thành một công việc vô cùng khó khăn.

Ngôn ngữ được thiết kế đầu tiên là một cách để miêu tả thuật toán và các lệnh nhập/xuất của ngôn ngữ. Sự vắng mặt của thiết bị I/0 làm cho nó rất khó khăn để tạo một giao diện chương trình với thế giới bên ngoài.

ALGO không tương thích và không hỗ trợ trên các hệ thống máy tính đầu tiên của IBM.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 77: NGÔN NGỮ MÁY (Computer Languages)

5) RPG - Report Program Generator

Là ngôn ngữ được thiết kế để phát sinh các báo cáo kết quả từ tiến trình xử lý của các ứng dụng kinh doanh.

Được phát triển bởi IBM vào năm 1961. Các phiên bản RPG sau này được gọi là RPGII.

Lập trình viên sử dụng bảng mã hóa để viết chương trình của mình và chỉ rõ đầu vào, sự tính toán và đầu ra.

RPG dễ dàng để học và sử dụng như COBOL.

Rpg chủ yếu được sử dụng để xử lý các ứng dụng thương mại trên những máy vi tính nhỏ.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 78: NGÔN NGỮ MÁY (Computer Languages)

6) LISP - LISt Processing

Được phát triển vào năm 1959 bởi John McCarthy của MIT.

Là ngôn ngữ thao tác với dữ liệu không phải là số mà là các biểu tượng, ký hiệu và chuỗi văn bản.

Tất cả chức năng để tính toán trong một ngôn ngữ lập trình đã được hoàn thành bằng cách sử dụng các hàm.

LISP được sử dụng rộng rãi trong các lĩnh vực mô hình

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 79: NGÔN NGỮ MÁY (Computer Languages)

7) PROLOG

PROLOG (lập trình logic) được phát triển sớm vào năm 1970, bởi một nhóm gồm các nhà khoa học của Trường Đại học Aix-Marseille và Đại học Edinburgh. Trình thông dịch đầu tiên của nó được phát triển tại Marseille vào năm 1972.

PROLOG là 1 ngôn ngữ không theo thủ tục. Các lập trình viên chỉ rõ làm cái gì và thoát ra khỏi hệ thống để tính toán bằng tay.

Cho phép lập trình viên phải tập trung vào các vấn đề kỹ thuật.

Được biết đến như là vấn đề hướng đối tượng hay ngôn ngữ đặc tả - hướng đối tượng.

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 80: NGÔN NGỮ MÁY (Computer Languages)

7) PROLOG

Không còn được sử dụng rộng rãi vì 2 lý do sau đây :

– Ngôn ngữ lập trình logic đã được chứng minh là tính hiệu quả không cao

– Ngôn ngữ lập trình logic chỉ có thể được sử dụng hiệu quả cho 1 vài ứng dụng tương đối nhỏ .

MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC

Page 81: NGÔN NGỮ MÁY (Computer Languages)

Một số đặc điểm quan trọng cho một ngôn ngữ lập trình tốt :1. Tính đơn giản

2. Tính tự nhiên

3. Sự trừu tượng hóa

4. Tính hiệu quả

5. Có cấu trúc

6. Tính chắc chắn

7. Tính cục bộ

8. Tính mở rộng

9. Phù hợp cho các môi trường

ĐẶC TRƯNG CỦA MỘT NGÔN NGỮ LẬP TRÌNH

Page 82: NGÔN NGỮ MÁY (Computer Languages)

1) Chương trình con:

• Là một chương trình được viết bằng cách nó có thể được đưa vào sử dụng trong các chương trình khác và được sử dụng bất cứ khi nào cần thiết mà không phải viết lại. Các chương trình con gọi là thủ tục con, thủ tục phụ và các hàm tùy theo ngôn ngữ lập trình.

• Cấu trúc của một chương trình con bao gồm một tiêu đề và thân. Mỗi tiêu đề của chương con bao gồm tên con và có thể có một danh sách các tham số. Thân chương trình con chứa đựng tập hợp các chỉ thị thực hiện các tác vụ của chương trình con .

• Sau khi tạo ra, một chương trình con có thể được sử dụng bởi các chương trình khác tại bất cứ điểm nào trong chương trình.

CÁC KHÁI NIỆM LIÊN QUAN KHÁC

Page 83: NGÔN NGỮ MÁY (Computer Languages)

Các thuận lợi của chương trình con:

1. Dễ dàng viết các chương trình.

2. Chỉ cần 1 bản sao mã chương trình con được giữ lại trong hệ thống nên tiết kiệm không gian lưu trữ hệ thống và tốn ít bộ nhớ trong quá trình chạy một chương trình.

3. Cho phép chương trình xây dựng trong một modular.

4. Cung cấp khả năng biên dịch một phần của chương trình mà không cần biên dịch toàn bộ chương trình.

5. Thuận lợi trong việc bảo trì, gỡ lỗi, tối ưu hóa hiệu suất, đọc nó và hoàn thiện nó.

CÁC KHÁI NIỆM LIÊN QUAN KHÁC

Page 84: NGÔN NGỮ MÁY (Computer Languages)

2) Bộ tiền xử lý• Một ngôn ngữ xử lý là cần thiết khi thêm các

câu lệnh dịch vào một chuỗi các câu lệnh của ngôn ngữ trước khi chương trình có thể biên dịch thành công bởi một ngôn ngữ biên dịch như một ngôn ngữ được biết đến là bộ tiền xử lý.

CÁC KHÁI NIỆM LIÊN QUAN KHÁC

Page 85: NGÔN NGỮ MÁY (Computer Languages)

2) Bộ tiền xử lý

CÁC KHÁI NIỆM LIÊN QUAN KHÁC

Minh họa sử dụng của bộ tiền xử lý

Page 86: NGÔN NGỮ MÁY (Computer Languages)

3) Ngôn ngữ kịch bản - scripting

• Các câu lệnh được sử dụng để hướng dẫn máy tính làm một số công việc.

• Một chương trình được viết bằng ngôn ngữ scripting thường được gọi là một tập lệnh.

• Ngôn ngữ scripting hỗ trợ các biến và kiểm soát cấu trúc đơn giản để cho phép các lập trình viên viết scripts, có thể thực thi điều kiện hay lặp lại một số lệnh.Với các tính năng này ngôn ngữ script được sử dụng để các xác định các lệnh phức tạp.

CÁC KHÁI NIỆM LIÊN QUAN KHÁC

Page 87: NGÔN NGỮ MÁY (Computer Languages)

3) Ngôn ngữ kịch bản - scripting • Linh hoạt vì có thể sử dụng trong các phạm vi

khác nhau. • Ngôn ngữ scripting thì diễn dịch chứ không

phải là biên soạn. Vì vậy một tập lệnh có thể tương tác được với một chương trình đang chạy và thay đổi trong quá trình chạy.

• Để kiểm soát một chương trình đang chạy, scripts có thể xử lý dữ liệu trước và dữ liệu sau.

• Cho phép lập trình viên gọi ra các thành phần ứng dụng cá nhân một cách trực tiếp.

• Ngôn ngữ scripting được gọi là Unix Shell Script, Pert, Tcl, và Python.

CÁC KHÁI NIỆM LIÊN QUAN KHÁC

Page 88: NGÔN NGỮ MÁY (Computer Languages)

4) Ngôn ngữ thế hệ thứ 4• Ngôn ngữ thế hệ thứ tư là ngôn ngữ không thủ

tục. • Yêu cầu các lập trình viên phải đánh vần các

bước trong việc xử lý các thủ tục cần thiết để đạt được kết quả mong muốn.

• Ngôn ngữ không thủ tục cho phép người sử dụng dễ dàng chỉ định “làm gì”, kết quả có thể được mô tả chi tiết “như thế nào “.

• Với tính linh hoạt rất nhiều lập trình viên chuyên nghiệp dễ dàng và nhanh chóng để viết một chương trình.

CÁC KHÁI NIỆM LIÊN QUAN KHÁC

Page 89: NGÔN NGỮ MÁY (Computer Languages)

4) Ngôn ngữ thế hệ thứ 4• Thân thiện với người dùng sau một hay hai ngày đào

tạo và thực hành. • Ngôn ngữ thế hệ thứ tư sử dụng tiếng anh. • Hạn chế về khả năng toán học, tự động báo cáo định

danh, sắp xếp thứ tự, và ghi lại sự lựa chọn bằng các tiêu chuẩn.

• Một số ngôn ngữ thế hệ thứ tư: ADR, phần mềm AG's Natural 2, Cinmon's Mantis, Mathematica Products Group's RAMIS II và Information Builders' FOCUS.

CÁC KHÁI NIỆM LIÊN QUAN KHÁC

Page 90: NGÔN NGỮ MÁY (Computer Languages)

CÁC KHÁI NIỆM LIÊN QUAN KHÁC

Chương trình viết bằng ngôn ngữ thế hệ thứ 4

Kết quả sự thực thi của ngôn ngữ thế hệ thứ 4