Nguyên lý các ngôn ngữ lập trình
Mục tiêu môn học:
– Giúp sinh viên nắm được một cách khái quát các vấn đề liên quan đến
ngôn ngữ lập trình.
– Sử dụng ngôn ngữ lập trình một cách dễ dàng và hiệu quả hơn
– Chọn được ngôn ngữ lập trình thích hợp để giải quyết các vấn đề lập
trình
– Học ngôn ngữ lập trình mới dễ dàng hơn
– Hiểu các nhiệm vụ cơ bản của trình biên dịch
– Hiểu làm thế nào để thiết kế được một ngôn ngữ lập trình
– Nắm được khái quát về các họ ngôn ngữ lập trình thông dụng: lập trình
hướng đối tượng, lập trình lôgic, lập trình hàm
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
1
SPHN
Nội dung
Chương
trình
Chương
trình
Chương
Chương
Chương
Chương
Chương
1: Tổng quan về ngôn ngữ lập
2: Đặc tả hình thức ngôn ngữ lập
3:
4:
5:
6:
7:
Các dữ liệu chương trình
Cấu trúc điều khiển
Lập trình hướng đối tượng
Lập trình lôgic
Lập trình hàm
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
2
SPHN
Đánh giá
Bài tập lớn: 30%
Kiểm tra cuối kỳ: 70%
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
3
SPHN
Chương 1
TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
4
SPHN
NỘI DUNG
Khái niệm ngôn ngữ lập trình
Tại sao phải nghiên cứu về ngôn ngữ lập
trình
Lịch sử phát triển ngôn ngữ lập trình
Phân loại ngôn ngữ lập trình
Các yêu cầu đối với ngôn ngữ lập trình
Các thành tố của ngôn ngữ lập trình
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
5
SPHN
1.1. Khái niệm ngôn ngữ lập trình
Định nghĩa Loud (1994): Ngôn ngữ lập trình là một hệ
thống được ký hiệu hóa để miêu tả những tính toán
(qua máy tính) trong một dạng mà cả con người và
máy tính đều có thể đọc và hiểu được.
Ngôn ngữ lập trình = Ký hiệu + quy tắc kết hợp
Cú pháp: sự kết hợp của các ký hiệu (dạng của biểu
thức, các phát biểu, các đơn vị nhỏ trong chương
trình)
Ngữ nghĩa: ý nghĩa của các sự kết hợp
Ngữ dụng: mối quan hệ của cú pháp, ngữ nghĩa với
thế giới bên ngoài
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
6
SPHN
Ví dụ về cú pháp, ngữ nghĩa, ngữ dụng
VD 1:
BT1 = 4
BT2 = 1 + 3
BT3 = 1 + 1 + 1 +1
VD 2: vòng lặp WHILE và REPEAT trong
Pascal
VD 3: Việc một ngôn ngữ lập trình thích
hợp hoặc không thích hợp với lĩnh vực áp
dụng này hoặc lĩnh vực áp dụng kia thuộc
vấn đề ngữ dụng
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
7
SPHN
1.2. Tại sao phải nghiên cứu về ngôn ngữ lập trình?
Ngôn ngữ lập trình là cần thiết đối với
người lập trình.
– Tại sao không dùng ngôn ngữ tự nhiên để lập trình?
– Tại sao không dùng ngôn ngữ máy để lập trình?
Một ngôn ngữ lập trình không chỉ là
phương tiện giao tiếp giữa người và máy,
mà còn là phương tiện giao tiếp giữa người
với người.
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
8
SPHN
Tại sao phải nghiên cứu về ngôn ngữ lập trình?
Có rất nhiều ngôn ngữ lập trình khác nhau. Mỗi
ngôn ngữ có những đặc trưng, sức mạnh và ưu
điểm riêng.
Lý thuyết cơ bản của ngôn ngữ lập trình giúp
cho việc đọc và hiểu chương trình dễ dàng hơn.
Nắm được nguyên lý của các ngôn ngữ lập
trình giúp ích cho việc học nhiều môn học
khác.
…
Nguyễn Thị Hạnh stem.Console.Write("Hello World!");
}
}
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
37
SPHN
HTML
<HTML>
<HEAD>
<TITLE>Hello, World Page!</TITLE>
</HEAD>
<BODY>
Hello, World!
</BODY>
</HTML>
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
38
SPHN
Java
class HelloWorld {
public static void main (String args[]) {
for (;;) {
System.out.print("Hello World ");
}
}
}
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
39
SPHN
Javascript
<TITLE>
Hello World in JavaScript
</TITLE>
<SCRIPT>
document.write ("Hello, world!")
</SCRIPT>
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
40
SPHN
LATEX
\documentclass{article}
\begin{document}
\begin{center}
\Huge{HELLO WORLD}
\end{center}
\end{document}
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
41
SPHN
Lisp
(DEFUN HELLO-WORLD ()
(PRINT (LIST 'HELLO 'WORLD)))
(LOOP (FORMAT T "~%Hello World"))
(while t
(message "Hello World")
(message "") ; force emacs to update
the display
)
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
42
SPHN
Prolog
hello :printstring("HELLO WORLD!!!!").
printstring([ ]).
printstring([H|T]) :- put(H), printstring(T).
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
43
SPHN
Smalltalk
Transcript show: 'Hello World‘.
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
44
SPHN
Visual Basic
Private Sub FOrm_Load()
Static I
I=1
for I = 1 to 10
msgbox "Hello World"
Next I
end sub
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
45
SPHN
Visual C++
////////////////////////////////////////////////////////////////////////////
/
// CHelloDlg dialog
CHelloDlg::CHelloDlg(CWnd* pParent /*=NULL*/)
: CDialog(CHelloDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CHelloDlg)
// NOTE: the ClassWizard will add
member initialization here
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()>LoadIcon(IDR_MAINFRAME);
}
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
46
SPHN
SQL
CREATE TABLE HELLO (HELLO CHAR(12))
UPDATE HELLO
SET HELLO = 'HELLO WORLD!'
SELECT * FROM HELLO
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
47
SPHN
SQL
CREATE TABLE HELLO (HELLO CHAR(12))
UPDATE HELLO
SET HELLO = 'HELLO WORLD!'
SELECT * FROM HELLO
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
48
SPHN
Word Macro
Sub MAIN
FileNewDefault
Insert "Hello World!"
FormatParagraph .Alignment = 1
While (1 = 1)
For count = 1 To CountFonts()
EditSelectAll
Font(Font$(count)), 40
Next
Wend
End Sub
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
49
SPHN
Dos Batch File
@echo off
:top
echo "Hello, World!"
goto top
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
50
SPHN
PHP
echo "<html>
<head>
<title>Hello World Page</title>
</head>
<body>
Hello World!
</body>
</html>"
?>
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
51
SPHN
Người lập trình viên đầu tiên
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
52
SPHN
Jogn Mauchly
Nguyễn Thị Hạnh – Bộ môn CNPM – Khoa CNTT – ĐH
53
SPHN