Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Bài giảng môn Lập Trình Căn Bản
Giáo trình
Giáo trình
LẬP TRÌNH CĂN BẢN
LẬP TRÌNH CĂN BẢN
Dành cho sinh viên chính quy
chuyên ngành Công Nghệ Thông Tin
ThS. Nguyễn Cao Trí
www.dit.hcmut.edu.vn/~caotri
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 2
Giới thiệu
Giới thiệu
Mục tiêu môn học
Giới thiệu các khái niệm cơ bản về lập trình trên máy tính.
Cung cấp cơ sở lý thuyết và kỹ năng cơ bản về lập trình cho
các môn học sau.
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à Pascal
–
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ể.
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 3
Phương thức
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
–
Được tham khảo tài liệu
Tài liệu tham khảo
–
Slide bài giảng Lập Trình Căn Bản
–
Giáo trình Lập trình căn bản – Khoa CNTT
Tài liệu khác
–
CDROM bài tập PASCAL và thực hành
–
www.dit.hcmut.edu.vn/~caotri
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Bài giảng môn Lập Trình Căn Bản
Chương 1
Chương 1
Khái niệm cơ bản
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
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 5
Máy tính - Computer
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 toán
–
Khả năng thực hiện các phép toán logic
–
Tốc độ tính toán cao
–
Làm theo chỉ thị
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 6
Kiến trúc máy tính
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,..
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 7
Chương trình máy tính
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
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 8
Ngôn ngữ lập trình
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
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 9
Ngôn ngữ máy - Machine languages
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ữ
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 10
Hợp ngữ - Assembly Languages
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
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 11
Ngôn ngữ cấp cao
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
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 12
Học ngôn ngữ lập trình
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.
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 13
Chương trình dịch
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
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 14
Một số khái niệm khác
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
integer, long, character, byte, ….
Real (double, float)
Kiểu khác: string
–
Kiểu dữ liệu có cấu trúc: array, string, record,..
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 đồ
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 15
Flow chart
Flow chart
Start
•
Start /Begin bắt đầu giải thuật. Chỉ có 1 và chỉ 1 điểm START.
•
Input / Output dữ liệu
xuất/nhập
•
Dòng xử lý
•
Đặc tả thao tác xử lý hay tính toán dữ liệu
•
Điều khiển rẽ nhánh
Điều kiện
Yes
No
•
Phát biểu rẽ nhánh khác
Giá trị xét phân nhánh
Trường hợp 1 Trường hợp i Khác
Stop
• Stop/End kết thúc của giải thuật. Có thể có một hoặc
nhiều điểm STOP.
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 16
Flow chart
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
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 17
Flow chart
Flow chart
Start
Nhập a, b
a=0 ?
Yes
No
b=0 ?
Yes
No
X=-b/a
Không có nghiệm
Vô số nghiệm
Stop
Algorithms
Giải phương trình ax + b = 0
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 18
Cấu trúc điều khiển cơ bản
Cấu trúc điều khiển cơ bản
If <condition> then Statement;
If <condition> then Statement 1
else Statement 2;
Case <Value> of
value 1 : Statement 1;
………..
value n : Statement n;
else : Statement 0
end;
While <condition> do Statement;
Repeat Statement until <condition>;
For counter=start value to end value do Statement;
For counter=start value downto end value do Statement
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 19
Chu kỳ sống của phần mềm
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
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 20
Một số ngôn ngữ lập trình
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#
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Bài giảng môn Lập Trình Căn Bản
Chương 2
Chương 2
Dữ liệu & cấu trúc chương trình
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 toán cơ bản
Cấu trúc cơ bản một chương trình PASCAL
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 22
Danh hiệu
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ụ: X , BienDem, Bien_dem, X1 , X2 , X3 , x1,x2,x3
Ví dụ sai: 101X3, (X1), Bien Dem
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 23
Danh hiệu (tt)
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ụ: Integer, Readln,sqrt, real,…
–
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ụ: begin, if, then, program, array, procedure (trang 22)
Ký hiệu đặc biệt: là những ký tự có ý nghĩa được quy định trước trong ngôn
ngữ.
–
Ví dụ: + - * / > >= := <> ; , ( ) @ [ ] (trang 23)
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 24
Qui ước đặt tên danh hiệu
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 then write(‘Phuong trinh vo nghiem’) ABC không gợi nhớ
If Delta < 0 then write(‘Phuong trinh vo nghiem’) Delta là tên gợi nhớ
Đại Học Bách Khoa Tp.HCM
Khoa Công Nghệ Thông Tin
Trang 25
Kiểu dữ liệu (data type)
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ểm INTEGER 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ểm 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ì đủ?