MƠN HỌC
PHƯƠNG PHÁP LẬP TRÌNH
Bài giảng mơn Phương pháp lập Trình
Giới thiệu
Mục tiêu môn học
Cung cấp cho sinh viên kiến thức căn bản về kỹ thuật lập
trình và lập trình theo tiếp cận hướng đối tượng, một
phương pháp lập trình rất thông dụng hiện nay.
Nội dung
–
–
–
–
Một số thuật ngữ liên quan đến máy tính và lập trình.
Sơ lược về ngơn ngữ lập trình
Ngơn ngữ minh họa Pseudo code và C/C++
Các giải thuật cơ bản
Kỹ năng tư duy và thực hành trên ngôn ngữ cụ thể.
Trang 2
Phương thức
Phương thức học
– Giờ lý thuyết: giảng và báo cáo
– Giờ thực hành tại phòng máy
Kiểm tra và thi
– Kiểm tra thực hành: kỹ năng lập trình
– Thi lý thuyết : trắc nghiệm khách quan
Tài liệu tham khảo
– Slide bài giảng Lập Trình Căn Bản
– Giáo trình Phương Pháp Lập trình – Khoa CNTT
Tài liệu khác
– CDROM bài tập và thực hành
Trang 3
Chương 1
Khái niệm cơ bản
Một
số khái niệm cơ bản về
–Máy tính & chương trình máy tính
–Ngơn ngữ lập trình ,translator,..
Giải
thuật và flow chart
–Giải thuật & biểu diễn giải thuật
–Flowchart
Công
cụ phát triển
–Công cụ IDE, Compiler
–Error & debug
Bài giảng môn Phương pháp lập Trình
Máy tính - Computer
Máy tính Analog
Máy tính số
–
–
–
–
Hệ nhị phân
Máy tính lập trình được
Mơ hình máy Turing và Von Newman
Các thế hệ máy tính
Đặc tính chung
–
–
–
–
Khả năng tính tốn
Khả năng thực hiện các phép tốn logic
Tốc độ tính tốn cao
Làm theo chỉ thị
Trang 5
Kiến trúc máy tính
Máy tính (Computer system)
Bao gồm nhiều thiết bị phần cứng (hardware devices)
Keyboard
Screen
(monitor)
Disks
Memory
Processing
Units
Hệ điều hành (Operating System – OS)
Phần mềm (software)
– Công dụng: êệ thống, ứng dụng, cơ sở dữ liệu
– Môi trường hoạt động: OS, Network, WEB, Server,..
Trang 6
Chương trình máy tính
Chương trình
– Danh mục các trang thiết bị, tài nguyên sử dụng
– Tiến trình sử dụng các tài nguyên và thực hiện các công việc định
trước
– Kết quả thực hiện
Chương trình máy tính
–
–
–
–
–
Tập hợp các lệnh được liệt kê theo một trình tự nhất định
Các dữ liệu sẽ được nhận
Các tài nguyên cần sử dụng
Các kết quả sẽ có được
Mục tiêu: xử lý dữ liệu theo yêu cầu định trước
Lập trình: viết chương trình cho máy tính
Trang 7
Ngơn ngữ lập trình
Ngơn ngữ lập trình
– Phương tiện để viết chương trình cho máy tính
– Hàng trăm ngơn ngữ lập trình khác nhau
– Những quy định về cú pháp (syntax) & ngữ nghĩa
(semantic)
– Máy tính có thể hiểu được
Phân chia làm 3 nhóm chính
– Ngơn ngữ máy - Machine languages
Ngơn
ngữ duy nhất của máy tính - CPU
– Hợp ngữ - Assembly languages
– Ngôn ngữ cấp cao - High-level languages
Trang 8
Ngôn ngữ máy - Machine languages
Ngôn ngữ duy nhất được máy tính (CPU) hiểu trực
tiếp.
Được xác định bởi tập lệnh của CPU
–
–
–
–
Phụ thuộc vào máy tính cụ thể
Dạng nhị phân {0,1}*
Rất khó đọc hiểu
Khó có khả năng viết chương trình trực tiếp
Khó
nhớ hàng chục ngàn lệnh dạng {0,1}*
Rất khó xác định & sửa lỗi
Khơng được sử dụng trong thực tế để viết chương
trình
Nền tảng xây dựng hợp ngữ
Trang 9
Hợp ngữ - Assembly Languages
Sử dụng các từ khóa tiếng Anh cho các lệnh hay
nhóm lệnh của mã máy.
Được dịch sang mã máy khi thực hiện
Chuyển đỗi nhanh chóng
Dễ đọc và dễ hiểu hơn
Vẫn tương đối khó sử dụng do
– Các lệnh cịn đơn giản nên phải dùng nhiều lệnh.
– Chưa có những cấu trúc điều khiển thuận tiện
– Khả năng tìm và sửa lỗi cũng chưa thuận tiện.
Nền tảng xây dựng các ngôn ngữ cấp cao
Trang 10
Ngôn ngữ cấp cao
Một câu lệnh diễn tả nhiều động thái
Có cấu trúc ngày càng giống ngơn ngữ tự nhiên
(tiếng Anh)
Được dịch sang assembly hay mã máy bằng các
chương trình dịch trước khi thực thi.
– Source code & Executed code
Được phân làm nhiều lớp
–
–
–
–
Lập trình goto
Lập trình cấu trúc – Structured
Lập trình hướng đối tượng – Object Oriented
Các dạng khác
Trang 11
Học ngơn ngữ lập trình
Học ngữ pháp
– Quy tắc ngữ pháp
– Từ vựng
– Cấu trúc câu
Ngữ nghĩa của các lệnh
Các “thành ngữ”
Học ngơn ngữ lập trình VS. Học ngơn ngữ tự nhiên
– Quy tắc ngữ pháp đơn giản
– Từ vựng ít, tự quy định
– Cấu trúc câu đơn giản
Hạn chế và khó khăn của sử dụng ngơn ngữ lập trình.
Trang 12
Chương trình dịch
Dùng để dịch từ một ngơn ngữ lập trình này sang ngơn ngữ
lập trình khác
Mục tiêu cuối cùng là dịch sang mã máy để có được executed
code –> chương trình thực thi
Phân loại:
– Intepreter – thơng dịch
– Compiler – biên dịch
– Intepreter vs. Compiler
Công cụ phát triển – Integrated Development Environment (IDE)
– Soạn thảo
– Dịch và sửa lỗi chương trình
– Chạy thử và sửa lỗi
Trang 13
Một số khái niệm khác
Lỗi và sửa lỗi
– Syntax error – lỗi ngữ pháp
– Semantic error- lỗi ngữ nghĩa
– Runtime error - Lỗi thực thi
Debug – Tìm và sửa lỗi
Dữ liệu, kiểu dữ liệu
– Các kiểu dữ liệu cơ bản
Số ngun, Số thực, Kí tự
– Kiểu dữ liệu có cấu trúc: mảng, chuỗi, cấu trúc,..
Biến (Variable) & Hằng (Constant)
Giải thuật: khái niệm, công cụ biểu diễn
Flow chart – lưu đồ
Trang 14
Flow chart
• Start /Begin bắt đầu giải thuật. Chỉ có 1 và chỉ 1 điểm START.
Start
• Dịng xử lý
• Input / Output dữ liệu
xuất/nhập
• Đặc tả thao tác xử lý hay tính tốn dữ liệu
No
Điều kiện
• Điều khiển rẽ nhánh
Yes
Giá trị xét phân nhánh
• Phát biểu rẽ nhánh khác
Trường hợp 1
Stop
Trường hợp i
Khác
• Stop/End kết thúc của giải thuật. Có thể có một hoặc
nhiều điểm STOP.
Trang 15
Flow chart
Ưu điểm
–
–
–
–
–
Trình bày trực quan giải thuật
Độc lập với ngơn ngữ tự nhiên
Độc lập với ngơn ngữ lập trình
Bảo đảm khả năng lập trình
Cho phép dễ dàng kiểm tra giải thuật
Nguyên tắc kiểm tra
– Đi từ START theo bất cứ đường nào cũng phải đến một
điểm dừng STOP
– Không có sự quay vịng vĩnh viễn
– Khơng có sự kết thúc lưng chừng
Trang 16
Flow chart
Algorithms
Giải phương trình ax + b = 0
Start
Nhập a, b
a=0 ?
No
X=-b/a
Yes
b=0 ?
Yes
No
Khơng có nghiệm Vơ số nghiệm
Stop
Trang 17
Cấu trúc lệnh cơ bản
if (condition) Statement;
if (condition) Statement 1;
else Statement 2;
switch(BiểuThứcChọn)
{
case hằng 1: S1;break;
case hằng 2: S2;break;
…….
case hằng n: Sn;break;
default: S0;
}
while (condition) Statement;
do{ Statement }while (condition);
for (BT1; ĐK ; BT2) Statement;
Trang 18
Chu kỳ sống của phần mềm
Thu thập yêu cầu
Phân tích thiết kế
Phát triển chương trình - codeing
– Xác định giải thuật
– Viết code và dịch thử , hiệu chỉnh các lỗi syntax
Thử nghiệm - Testing
– Chạy thử với các dữ liệu mẫu để kiểm tra lỗi semantic và
runtime
Vận hành và bảo trì
Phát triển theo yêu cầu
Trang 19
Một số ngơn ngữ lập trình
Lập trình goto
– Assembly
– Basic
Lập trình cấu trúc
– Pascal, C
– Foxpro
Lập trình hướng đối tượng
– Java, C++, Object Pascal,…
Khác
– Prolog, LISP, Visual basic (VB), VC++, J++, Delphi, ASP, PHP,..
– Visual studio .NET: VB.NET, ASP.NET, C++.NET, C#
Trang 20
Chương 2
Dữ liệu & cấu trúc chương trình
Các
khái niệm cơ bản về dữ liệu và biểu diễn
dữ liệu trong máy tính
Khai báo dữ liệu trong chương trình
Một số phép tốn cơ bản
Cấu trúc cơ bản một chương trình C/C++
Bài giảng mơn Phương pháp lập Trình
Danh hiệu
Khái niệm “Danh hiệu”
– Là tên của các đối tượng khác nhau trong lập trình, dùng
để phân biệt giữa đối tượng này với đối tượng khác.
– Các đối tượng thường được đặt tên bằng danh hiệu: biến,
hằng, chương trình con, ……
Qui tắc ngữ pháp của danh hiệu:
–
–
–
–
Bắt đầu bằng chữ cái (A-Z, a-z) hay dấu gạch dưới ( _ )
Theo sau là chữ cái, dấu gạch dưới hay chữ số.
Với Pascal không phân biệt CHỮ HOA hay chữ thường
Một số ngơn ngữ có phân biệt như Java,…
Ví
dụ:
Ví dụ sai:
X , BienDem, Bien_dem, X1 , X2 , X3 , x1,x2,x3
101X3, (X1), Bien Dem
Trang 22
Danh hiệu (tt)
Danh hiệu gồm 2 loại:
– Danh hiệu thuộc ngôn ngữ (Pre-defined)
Do ngôn ngữ quy định trước ý nghĩa của nó.
Được dùng cho các đối tượng có sẵn trong ngơn ngữ
– Ví dụ: int, cin, cout,…
– Danh hiệu do người sử dụng đặt ra (user defined)
Do người sử dụng tự qui ước và qui định ý nghĩa của nó trong chương
trình nguồn (source code)
– Ví dụ: abc, xyz1, xyz2, delta, namsinh, tinh_giai_thua
Từ dành riêng:
Là những từ do ngôn ngữ quy định sẵn như là một bộ phận
cấu thành ngôn ngữ đó.
– Ví dụ: if, else, do, while
Ký hiệu đặc biệt:
ngữ.
là những ký tự có ý nghĩa được quy định trước trong ngơn
– Ví dụ: + - * / > >= := <> ; , ( ) @ [ ]
Trang 23
Qui ước đặt tên danh hiệu
Qui tắc đặt tên danh hiệu
– Tuân thủ quy tắc ngữ pháp của danh hiệu
– Không được trùng lắp với danh hiệu thuộc ngôn ngữ hoặc
đã được định nghĩa.
– Nên sử dụng các tên gợi nhớ
Tên gợi nhớ?
– Tên mà khi đọc đến sẽ giúp ta biết được ý nghĩa của đối
tượng mang tên đó.
– Lợi ích của tên gợi nhớ: giúp chương trình dễ đọc, dễ hiểu
& dể kiểm tra.
if (ABC < 0) cout<<“ Phuong trinh vo nghiem”;
ABC không gợi nhớ
if (Delta < 0) cout<<“ Phuong trinh vo nghiem”) Delta là tên gợi nhớ
Trang 24
Kiểu dữ liệu (data type)
Kiểu dữ liệu là gì?
– Một kiểu dữ liệu là một qui định về hình dạng, cấu trúc, miền giá trị,
cách biểu diễn và cách xử lý một loại dữ liệu thực tế nào đó trong máy
tính.
Kiểu int biểu diễn số nguyên từ -32767 đến 32768 và thực hiện được các phép toán
cộng, trừ, nhân, chia, div, mod
Kiểu char biểu diễn các ký tự và biểu diễn giữa cắp dấu nháy đơn. ‘A’
Có thể thực hiện phép so sánh, không thể cộng, trừ, nhân, chia
Mọi dữ liệu muốn được xử lý bằng máy tính thì phải quy về
một kiểu dự liệu nào đó mà ngơn ngữ lập trình đó hiểu được.
Số kiểu dữ liệu là một yếu tố so sánh ngơn ngữ lập trình.
Càng nhiều kiểu thì càng thuận lợi cho xử lý.
Bao nhiêu kiểu dữ liệu thì đủ?
Trang 25