Bài giảng Kỹ thuật lập trình Tổng quan về Kỹ thuật lập trình do GV. Hà Đại Dương biên soạn với mục đích trang bị cho sinh viên kiến thức cơ bản về phân tích bài toán, cách thức lập trình giải bài toán; mô tả về cấu trúc dữ liệu, các cấu trúc lệnh trong lập trình để giải bài toán. Mời các bạn cùng tham khảo.
Trang 1– Thị giác máy (Computer Vision): Kết hợp với trang
bị vũ khí như MBT03, Hiệu chỉnh súng; Phát hiện
cháy (Vision-based Fire Detection) …
– Hệ thông tin quản lý (Management Information
System): Hệ quản lý đào tạo; Hệ thống quản lý bảo
hiểm xã hội …
Trang 2Nội dung
1 Giới thiệu chung
Tài liệu học tập, tham khảo
Kiểm tra đánh giá
2 Bài toán và việc giải bài toán trên máy tính
Phương pháp giải bài toán trên máy tính
Cấu trúc dữ liệu và giải thuật
Trang 3Giới thiệu chung
Mục đích
• Kiến thức:
– Trang bị cho sinh viên kiến thức cơ bản về phân
tích bài toán, cách thức lập trình giải bài toán;
– Mô tả về cấu trúc dữ liệu, các cấu trúc lệnh trong
lập trình để giải bài toán.
• Kỹ năng:
– Sử dụng thành thạo công cụ lập trình C
– Biết gỡ rối chương trình
Trang 4Yêu cầu
– Ngôn ngữ lập trình C: mô tả dữ liệu đơn giản …
2 Cấu trúc điều kiểm: Chọn, lặp
3 Cấu trúc dữ liệu: Mảng, Xâu, Con trỏ, Tệp …
4 Tổ chức chương trình: Hàm
5 Cấu trúc dữ liệu nâng cao: Danh sách, stack …
6 Một số thuật toán: Sắp xếp, Tìm kiếm …
Trang 5Tài liệu học tập
• Slides bài bảng
giảng Lập trình cơ bản, HVKTQS 2010;
toán trong tin học, Nhà xuất bản giáo dục
Cường, Cấu trúc dữ liệu + Giải thuật = Chương
trình, NXB KHKT, 2001;
Trang 6Kiểm tra đánh giá
Bài toán và việc giải quyết bài
toán trên máy tính
Trang 7Bài toán (thực tế)
– Giải phương trình bậc 2 (quá quen)
– Tính tiền điện, tính thuế thu nhập cá nhân (???)
– Đổi số tiến dạng số -> Chữ (???)
– Kiểm soát giáo thông
– Chương trình quản lý sinh viên
Trang 8Bài toán (thực tế)
• Ví dụ: Giải phương trình bậc 2: ax2+bx+c=0
– Dữ liệu vào: A - Các hệ số a, b, c và ???
– Kết quả ra: B - Nghiệm x1, x2và ???
– Biến đổi: => từ đầu vào A thành kết quả ra B : Tính
= b 2 -4ac, tùy thuộc vào để tính nghiệm …
A => B
Bài toán (thực tế)
– Dữ liệu vào: A - Hình ảnh thu được từ camera …
– Kết quả ra: B - Xe đi đúng, xe vượt đèn đỏ …
– Biến đổi: => từ đầu vào A thành kết quả ra B :
A => B
Trang 91 Cụ thể hóa các yêu cầu của bài toán
2 Mô tả dữ liệu: Xác định dữ liệu dùng cho BT
Chương trình trên máy tính
Phương pháp giải BT trên MT
Cụ thể hóa bài toán
– Thông báo về điều kiện đặt ra cho cách giải (=>)
thường không được nêu ra một cách minh bạch
A => B A’ B’
Trang 10Mô tả A’ , B’
• A’ dữ liệu vào (Input):
– Đơn giản: Số nguyên, số thực, ký tự
• Cách thức xử lý : Thuật toán (giải thuật)
• Thuật toán: Các chỉ dẫn rõ ràng để 1 máy
(tính), hoặc 1 người có thể thực hiện được để
từ dữ liệu vào A’ đưa ra được kết quả B’
Trang 11Ví dụ
• Giải phương trình bậc 2: ax2 + bx + c = 0
– Thuật toán:
• Bước 1: Tính Delta D
• Bước 2: Nếu D<0 -> Vô nghiệm
• Bước 3: Ngược lại (D<0),
– Bước 3.1: Nếu D = 0: Có nghiệm kép
– Bước 3.2: Ngược lại: Có 2 nghiệm phân biệt
• Tìm số lớn nhất trong ba số a, b, c: T.Toán ???
logic về thứ tự thực hiện câu lệnh sau đây:
– Tuần tự (Sequential): Các công việc (lệnh) được
thực hiện một cách tuần tự, công việc này nối tiếp
công việc kia (từ trên xuống dưới).
– Lựa chọn (Selection) : Lựa chọn một công việc (lệnh)
để thực hiện căn cứ vào một điều kiện nào đó.
– Lặp (Repeating): Thực hiện lặp lại một công việc
(lệnh) không hoặc nhiều lần căn cứ vào một điều
kiện nào đó.
Trình tự logic của thuật toán
Trang 12Biểu diễn thuật toán
phương trình ax+b=0
–Bước 1: Nhận giá trị của các tham số a, b
–Bước 2: Xét giá trị của a xem có bằng 0 hay không?
Nếu a=0 thì làm Bước 3, nếu a 0 thì làm Bước 4
–Bước 3: (a=0) Nếu b=0 thì ta kết luận phương trình
vô số nghiệm, nếu b 0 thì ta kết luận phương
Trang 13else begin
if Delta<0 then Phương trình Vô nghiệm Else
Begin Phương trình có 2 nghiệm x1=(-b+sqrt(Delte))/(2*a) x2=(-b+sqrt(Delte))/(2*a) end
end
Trang 14Cấu trúc dữ liệu và Thuật toán
Thuật toán + Cấu trúc dữ liệu = Chương trình
Niklaus Emil Wirth
In 1975 he wrte the book "Algorithms + Data Structures =
Programs", which gained wide recognition and is still
useful today.
Was born in Winterthur, Switzerland, in 1934 Professor of Informatics at ETH Zürich in 1968 Chief designer of the programming languages Euler, Algol W, Pascal
He received the ACM Turing Award for the
development of these languages and in 1994
Chương trình (phần mềm)
– Là một thể hiện Cấu trúc dữ liệu và Thuật toán
nhằm thực hiện một công việc nào đó trên 1 ngôn
ngữ lập trình.
– Là 1 dãy các chỉ lệnh nhằm thực hiện 1 công việc.
– Chương trình nguồn được biên dịch => Phần mềm.
giải pt bậc 2, biên dịch thành file dạng EXE
Trang 15Công cụ lập trình
Ngôn ngữ lập trình
máy tính
– Được thiết kế với 1 mục đích nào đó
– Có nhiều ngôn ngữ lập trình đã được phát minh
ra và sử dụng:
• Pascal, C
• Java, PHP,
• …
Trang 16Công cụ lập trình
development environment), cho phép:
– Soạn thảo văn bản chương trình = ngôn ngữ LT nào đó.
– Kiểm tra lỗi cú pháp, kiểm tra lỗi logic (debug)
– Biên dịch chương trình nguồn (source) thành chương trình
thực thi được trên máy tính (executable program)
Microsoft Visual studio
– C, C++, C#
– Visual Basic
– Soạn thảo văn bản chương trình
– Kiểm tra lỗi, debug, biên dịch …
Trang 17Ngôn ngữ lập trình C/C++
Trang 18The C programming language
• Phát triển từ đầu thập niên 1970 bởi Dennis
Ritchie để dùng trong hệ điều hành UNIX
• Từ đó, ngôn ngữ này đã lan rộng ra nhiều hệ điều
hành khác và trở thành một những ngôn ngữ phổ
dụng nhất
• C là ngôn ngữ rất có hiệu quả và được ưa
• Cũng được dùng cho việc viết các ứng dụng
• C cũng thường được dùng làm phương tiện giảng
dạy trong khoa học máy tính
Ví dụ
Trang 19Bộ ký tự (Characters)
• 26 chữ cái latinh HOA A,B,C Z
• 26 chữ cái latinh thường a,b,c z
với mục đích đã được xác định trước
Trang 20Tên (Identifier)
phần của chương trình: Biến, Hàm, Hằng …
• Tên là một dãy các kí tự gồm các chữ cái [a-z,
A-Z, 0-9] và gạch nối “_”
• Lưu ý:
– Tên không đuợc chứa kí tự trống,
– Tên không được bắt đầu bằng một chữ số,
– Tên không được trùng với từ khóa
• Nên đặt các tên gợi nhớ, có ý nghĩa, không quá
dài.
Kiểu dữ liệu cơ bản (Data Types)
– Kiểu nguyên (Integral)
– Kiểu thực (Floating point)
Tham khảo:
https://msdn.microsoft.com/en-us/library/cc953fe1.aspx
liệu Tham khảo:
https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx
Trang 2118/08/2016 41
https://msdn.microsoft.com/en-us/library/cc953fe1.aspx
Trang 2218/08/2016 43
https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx
Trang 23• Có thể thay đổi giá trị trong khi chương trình
Trang 24Hằng (Constant)
đến chương trình
– Ví dụ: const int Pi = 3.14 ; //Khai báo hằng
viết chú thích trên nhiều dòng)
– Ví dụ: /* Đoạn chương trình tính
nghiệm phương trình bậc 2 */
Trang 25scanf( “ %d %d ”, &a, &b );
• Hàm scanf() hoạt động thế nào???
printf( “ Tong %d + %d = %d ”, a, b, a+b );
• Hàm printf() hoạt động thế nào???
Trang 273 Mô tả thuật toán tìm USCLN của hai số.
4 Mô tả thuật toán tìm số lớn nhất trong ba số
5 Mô tả thuật toán tìm số lớn nhất trong 10 số
Trang 28Bài tập
6 Giá điện sinh hoạt tháng được tính như sau:
– Từ 0-50kWh giá 92% giá trung bình (GTB)
Mô tả thuật toán tính tiền điện sinh hoạt tháng khi
biết số điện tiêu thụ tháng và giá trung bình.
Bài tập về nhà
1 Diễn giải về kiểu int trong VS C/C++
2 Diễn giải về kiểu chartrong VS C/C++
3 Diễn giải về kiểu float trong VS C/C++
4 Diễn giải về hàm scanf() trong VS C/C++
5 Diễn giải về hàm printf() trong VS C/C++
6 Diên giải về biểu thức và phép toán trong VS
C/C++
Trang 29Bài tập về nhà
7 Hoàn thiện các bài tập trên lớp
Chuẩn bị 1 bản báo cáo trên word, nộp cho
giáo viên vào buổi học tiếp theo.