Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính

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

Ngôn ngữ máy tính là một biện pháp để giao tiếp dùng để truyền đạt thông tin giữa người và máy tính

Tất cả ngôn ngữ máy tính có từ ngữ riêng của chúng.

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 nhưng đa số ngôn ngữ máy tính sử dụng rất hạn chế hoặc hạn chế từ vựng.

Ngôn ngữ máy tính có thể 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

Là ngôn ngữ của máy tính vật lý mà người dùng có thể lập trình được.

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ể.

 

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính trang 1

Trang 1

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính trang 2

Trang 2

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính trang 3

Trang 3

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính trang 4

Trang 4

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính trang 5

Trang 5

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính trang 6

Trang 6

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính trang 7

Trang 7

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính trang 8

Trang 8

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính trang 9

Trang 9

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính trang 10

Trang 10

Tải về để xem bản đầy đủ

ppt 79 trang duykhanh 3800
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính

Bài giảng Xác suất thống kê - Chương 12: Ngôn ngữ máy tính
 thi các chương trình. 
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ý. 
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 
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 những lĩnh vực và mục đích của nó. 
MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO 
3) Basic 
BASIC là chữ viết tắt của B eginners A ll-purpose S ymbolic I nstruction C ode, 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 đaih học Darmouth ,Mỹ 
Các đặc tính của BASIC: 
1. Được thiết kế 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 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 bởi vậy nó có thể học và sử dụng dễ dàng. 
4. Bộ dịch ngôn ngữ sử dụng cho BASIC 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 
MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO 
5 REM PROGRAM TO COMPUTE 
6 REM THE SUM OF 10 NUMBERS 
10 LETS = 0 
20 FOR I = 1 TO 10 
30 READ N 
40 LET S=S + N 
50 NEXT I 
60 PRINT "THE SUM OF GIVEN NUMBERS = "; S 
70 DATA 4,20,15,32,48 
80 DATA 12,3,9, 14,44 
90 END; 
Một chương trình Basic cơ bản 
4) Pascal: 
Được đặt tên theo 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 Nicklaus Wirth sư 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 với biểu thức BEGIN và kết thúc với biểu thức END 
MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO 
Pascal được công nhận như là một ngôn ngữ giảng dạy và đượ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 
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 DO 
	BE GIN 
	READ (N); 
	SUM:= SUM + N; 
	END; 
	WRITELN (“THE SUM OF GIVEN NUMBERS =”, SUM); 
END 
5) PL / 1: 
 PL/1 viết tắt của “ P rogramming L anguage O ne”. Nó được thiết kế bởi IBM năm 1964. PL / 1 đã đượ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 thông có thể được sử dụng cho bất cứ loai ứng dụng nào 
Các tính năng của PL/1 để: 
Để lập trình các ứng dụng kinh doanh và ứng dụng khoa học. 
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 
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 
C and C++ 
Ngôn ngữ C đã được phát triển năm 1972 tại 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 
1) C and C++ 
Ngôn ngữ C có các tính năng sau: 
Được phát triển như là một ngôn ngữ biên dịch. 
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ớ. 
Hỗ trợ các kiểu dữ liệu do người dùng định nghĩa. 
Hỗ trợ các khái niệm lập trình mô đun và cấu trúc. 
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. 
Là ngôn ngữ nhỏ và ngắn gọn chỉ cung cấp những tính năng cần thiết bởi vậy 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 
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. 
Tuy nhiên, C + + cũng khó khăn hơn để học so với C, vì học C + + có nghĩa học tất cả mọi thứ về C. và sau đó học thiết kết và cài đặt hướng đối tượng 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 
2) Java 
Java 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. 
Ngôn ngữ đã đượ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 
Java có các tính năng sau đây : 
Java sử dụng các khái niệm chỉ biên dịch một lần trong đó có 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 
Java được phát triển là một nhóm nhỏ của các tính năng trong C ++ nên nó đơn giản, dễ cài đặt và dễ sử dụng. Một số các tính năng phức tạp của C ++ như con trỏ và đa thừa kế không là một phần của Java. Do điều này, Java được coi là một ngôn ngữ lập trình hướng đối tượng hoàn toàn 
Việc biên dịch được thực bởi máy độc lập. 
MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC 
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ự. 
Nó đã đượ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 
Các tính năng của Ada: 
Phù hợp cho việc viết các ứng dụng với đa tiến trình xảy ra đồng thời vì các tính năng này rất phổ biến trong các ứng dụng quân sự. 
Ngôn ngữ có khả năng xử lý lỗi tốt. 
Ngôn ngữ 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. 
Có thể viết các thủ tục chung mà có thể được 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 
Thảo luận bằng cách nào để Ada có các tính năng đó 
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 quốc tế 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 
4) ALGOL 
Một số tính năng chính của ALGOL: 
Cho phép đặt tên các biến với chiều dài bất kỳ. 
Cho phép mảng có nhiều chiều. 
Cho phép lập trình viên xác định giới hạn thấp nhất của mảng. 
Hỗ trợ câu lệnh IF lồng nhau. mà không có trong FORTRAN. 
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ố. 
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 
4) ALGOL 
Một số tính năng chính của ALGOL: 
Các lệnh ghép thành một khối lệnh. 
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ộ. 
Cho phép các mảng động. 
MỘT SỐ NGÔN NGỮ LẬP TRÌNH CẤP CAO KHÁC 
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 
5) RPG 
RPG viết tắt của R eport P rogram G enerator. 
Là ngôn ngữ được thiết kế để phát sinh báo cáo kết quả đầu ra từ tiến trình xử lý của các ứng dụng kinh doanh phổ biến. 
Ngôn ngữ đượ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. 
Người lập trình viên sử dụng bảng mã hóa chi tiết để viết chương trình của mình để 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 
6) LISP 
LISP viết tắt của LIS t P rocessing. 
Đượ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 
7) PROLOG 
PROLOG được hiểu là 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 phương pháp để làm việc 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 
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 
Một số đặc điểm quan trọng cho một ngôn ngữ lập trình tốt : 
Tính đơn giản 
Tính tự nhiên 
Sự trừu tượng hóa 
Tính hiệu quả 
Có cấu trúc 
Tính chắc chắn 
Tính cục bộ 
Tính mở rộng 
Phù hợp cho các môi trường 
ĐẶC TRƯNG CỦA MỘT NGÔN NGỮ LẬP TRÌNH 
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 
Các thuận lợi của chương trình con: 
Dễ dàng viết các chương trình bởi vì các lập trình viên có thể viết mã ngắn hơn. 
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. 
Cho phép chương trình xây dựng trong một modular thích hợp. 
Thiết kế modular hay hệ thống phần mềm trong hình thức chương trình con cũng 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. 
Thuận lợi trong việc bảo dưỡng, 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 
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 
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ý 
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 
3) Ngôn ngữ kịch bản - scripting 
Ngôn ngữ scripting thực hiện được trong môi trường cho các ứng dụng phức tạp nhưng vẫn đủ linh hoạt để sử dụng trong một 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. 
Thường 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 
4) Ngôn ngữ thế hệ thứ 4 
Ngôn ngữ thế hệ thứ tư là ngôn ngữ không thủ tục. Một ngôn 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 
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. 
Ngôn ngữ thế hệ thứ tư cũng bao gồm các tính năng 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ư thường được gọi là ý tưởng của 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 
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 
Câu hỏi và bài tập 
Giáo trình trang 426 và bài tập trang 45 

File đính kèm:

  • pptbai_giang_xac_suat_thong_ke_chuong_12_ngon_ngu_may_tinh.ppt