Bài giảng kỹ thuật lập trình tự động hóa ( combo full slides 3 chương ) Chương I. MÃ HÓA VÀ HỆ ĐẾM Chương II CƠ BẢN VỀ THUẬT TOÁN LẬP TRÌNH Chương III NGÔN NGỮ LẬP TRÌNH C Bài giảng kỹ thuật lập trình tự động hóa ( combo full slides 3 chương )
Trang 2NỘI DUNG
Chương I MÃ HÓA VÀ HỆ ĐẾM
Chương II CƠ BẢN VỀ THUẬT TOÁN - LẬP TRÌNH
Chương III NGÔN NGỮ LẬP TRÌNH C
Trang 4Khái niệm: Hệ đếm là tập hợp các phương pháp gọi
và biểu diễn các con số bằng các kí hiệu có giá trị số lượng xác định gọi là chữ số
Trang 5Biểu diễn số tổng quát
Giá trị biểu diễn
Cơ số của hệ đếm: Giá trị số lượng của các chữ số
a i (N) của một hệ đếm hay 0 ≤ a i ≤ N-1 (a i nguyên)
Ví dụ: N =10 ⇒ a i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
N =8 ⇒ a i = 0, 1, 2, 3, 4, 5, 6, 7
N =16 ⇒ a i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C,D, E, F
N =2 ⇒ a i = 0, 1
A= a m-1 a m-2 a 0, a -1 a -n
A (N) = a m-1 N m-1 + a m-2 N m-2 + + a 0 N 0 + a -1 N -1 + + a -n N -n
Khái niệm hệ đếm
Trang 6Khái niệm hệ đếm
Trang 8Kỹ thuật máy tính: Mã hóa là quá trình biến đổi những thông tin thành dữ liệu quen thuộc với máy tính (mã nhị phân).
Hệ đếm nhị phân và
khái niệm mã hóa
Trang 9 Biểu diễn số nhị phân
4bit 1 Nibble 210Byte 1 Kilobyte (KB) 8bit 1 Byte 210 Kilobyte 1 Megabyte (MB)
2byte 1 Word 210 Megabyte 1 Gigabyte (GB)
A = a 3 a 2 a 1 a 0
a 3 a 2 a 1 a 0 = a 3 2 3 + a 2 2 2 + a 1 2 1 + a 0 2 0
20, 21, 22, 23 : là các trọng số
a0: LSB-Least Significant Bit
a3: MSB-Most Significant Bit
Hệ đếm nhị phân và
khái niệm mã hóa
Trang 11Mã hóa trong lĩnh vực máy tính gồm :
Mã hóa số (thập phân => số nhị phân)
Trang 17Số nguyên không dấu (unsigned integers): dùng
biểu diễn các số nguyên dương
Số nguyên có dấu (signed integers):có thể là số
dương hoặc số âm
Bit có trọng số cao nhất MSB được dùng để biểu diễn dấu của số,
MSB=1 biểu diễn số âm,
MSB=0 biểu diễn số dương
Các số âm được lưu trong VXL, VĐK dưới dạng số bù hai.
Số bù 1 là một số nguyên nhận được bằng cách lấy phần
bù của các bit của số nguyên đã cho(đảo bit), thay 0 bằng 1
và ngược lại
Số bù 2 là một số nguyên nhận được bằng cách cộng 1 vào
số bù 1 của chính nó.
Mã hóa số nguyên
Trang 195000 4999
4998
5002 5001
(-0001) (-0002)
Mã hóa số nguyên
Trang 21 Mã bù 2 của X được xác định bởi: 2n-|X|
Ví dụ: Tìm biểu diễn nhị phân có độ dài 8 bit của số
-1
Mã bù 2 của (-1) là: 28-1=256-1=255(10)= 11111111(2)
Mã hóa số nguyên
Trang 22 [0…2n-1-1] biểu diễn số dương
[2n-1…-1] biểu diễn số âm
Mã hóa số nguyên
Trang 25 Phần biểu diến dấu dương hay âm
Phần biểu diễn giá trị số (mantissa M )
Phần biểu diễn số mũ (exponent Ne)
R= ( -1) × M × N
Mã hóa số thực
Trang 26Biểu diễn số thực trong hệ nhị phân
Chuẩn MSBIN (Microsoft binary)
Trang 28Có độ dài 11 bits cho số 64 bits
Bias = 127 cho số 32 bits
=1023 cho số 64 bits
S E-BiasR= -1 ×M×2
Trang 29-1-2-3
(0,375) 0,375x2 0,75 0: bit có trọng số 2 0,75x2 1,5 1:bit có trọng số 2 0,5x2 1,0 1: bit có trọng số 2
Trang 32American Standard Code for Information Interchange
Bảng mã ASCII 7 bit mã hóa ký tự
Trang 35Ôn tập – Thảo luận
1 Đổi những số nhị phân và số hex sau ra số thập phân:1110, 100101011110, A5BCh, F2DEh.
2 Đổi những số thập phân sau: 98, 124 ra số nhị phân; 954, 23390 ra số hex
Trang 36Ôn tập – Thảo luận
5 Thực hiện các phép cộng sau:
1001001b + 1000110b 11010000b + 01010011b B2CDh + 1234h
Trang 37Ôn tập – Thảo luận
7 Biểu diễn các số được mã hoá dưới dạng ASCII sau ra ký tự:
41 74 74 61 63 6B 20 61 77 6E
8 Để chuyển một chữ cái thành một chữ cái in hoa chứa trong một byte thì cần phải làm như thế nào? (hãy dựa vào bảng ASCII).
9 Hãy chuyển các số thập phân (0 9) thành mã ASCII.
10 Hãy biểu diễn tên lớp, họ và tên SV, mã số sinh viên của mình bằng mã ASCII 8bit dưới dạng chuỗi các số hexa.
Ôn tập – Thảo luận
Trang 38Ôn tập – Thảo luận
10 Chuyển đổi các giá trị 56 (10) và 45 (10) sang các hệ
cơ số 2, 8, 16 và thực hiện các phép toán cộng, trừ, nhân, chia hai số đó Kiểm tra lại kết quả phép toán
ở hệ cơ số 10.
11 Biểu diễn các số thực ở hệ thập phân sau: 3,25; 4,5; 6,125 bằng số thực có dấu phảy động 32bit theo tiêu chuẩn IEEE754.
12 Xác định giá trị số thực dưới dạng số thập phân của các số thực có dấu phảy động 32bit theo tiêu chuẩn IEEE754 sau: BA200000h; 9C500000h.
13 Tìm phương án đổi một số nguyên có dấu 8 bit thành số nguyên có dấu 16 bit
14 Tìm hiểu thêm về các dạng mã hóa khác (âm thanh, hình ảnh, ký tự unicode…)
Ôn tập – Thảo luận
Trang 39Chương II
CƠ BẢN VỀ THUẬT TOÁN - LẬP TRÌNH
Trang 40 Khái niệm về thuật toán
Định nghĩa về thuật toán
Tính chất của thuật toán
Các dạng biểu diễn của thuật toán
Ôn tập – Thảo luận
Nội dung
Trang 41 Kỹ thuật lập trình là gì? Kỹ thuật thực thi một
giải pháp phần mềm (cấu trúc dữ liệu + giải thuật) dựa trên nền tảng một phương pháp luận (methodology) và một hoặc nhiều ngôn ngữlập trình phù hợp với yêu cầu đặc thù của ứng dụng.
Kỹ thuật lập trình
= Tư tưởng thiết kế+ Kỹ thuật mã hóa
= Cấu trúc dữ liệu + Giải thuật + Ngôn ngữ lập trình
Lập trình máy tính
Lập trình
Trang 42 Ổn định và bền vững: Chương trình chạy ổn định trong
cả những trường hợp khắc nghiệt; Chạy ít lỗi (số lượng lỗi ít, cường độ lỗi thấp); Mức độ lỗi nhẹ có thể chấp nhận được
ƒ Khả năng chỉnh sửa: Dễ dàng chỉnh sửa trong quá
trình sử dụng và phát triển; Dễ dàng thay đổi hoặc nâng cấp để thích ứng với điều kiện bài toán lập trình thay đổi
ƒ Khả năng tái sử dụng: Có thể được sử dụng hoặc
được kế thừa cho các bài toán lập trình khác
Lập trình máy tính
Lập trình
Trang 43 Độ tương thích: Khả năng thích ứng và chạy tốt trong
các điều kiện môi trường khác nhau
ƒ Hiệu suất: Chương trình nhỏ gọn, sử dụng ít bộ nhớ;
Tốc độ nhanh, sử dụng ít thời gian CPU
ƒ Hiệu quả: Thời gian lập trình ngắn; Khả năng bảo trì dễ
dàng; Giá trị sử dụng lại lớn; Sử dụng đơn giản, thân thiện; Nhiều chức năng tiện ích
Lập trình máy tính
Lập trình
Trang 44 Học cách tư duy và phương pháp lập trình: Tư duy
toán học, tư duy logic, tư duy có cấu trúc, tư duy hướng đối tượng, tư duy tổng quát; Tìm hiểu về cấu trúc dữ liệu
và giải thuật
ƒ Hiểu sâu về máy tính: Tương tác giữa CPU, chương
trình và bộ nhớ; Cơ chế quản lý bộ nhớ
ƒ Nắm vững ngôn ngữ lập trình: Biết rõ các khả năng và
hạn chế của ngôn ngữ; Kỹ năng lập trình (đọc thông, viết thạo)
Tự rèn luyện trên máy tính: Hiểu sâu được các điểm
nêu trên; Rèn luyện kỹ năng lập trình; Thúc đẩy sáng tạo
Lập trình máy tính
Lập trình
Trang 45 Trừu tượng hóa: Chắt lọc ra những yếu tố quan trọng,
bỏ qua những chi tiết kém quan trọng
Đóng gói: Che giấu và bảo vệ các dữ liệu quan trọng qua một giao diện có kiểm soát.
Module hóa: Chia nhỏ đối tượng/vấn đề thành nhiều module nhỏ để dễ can thiệp và giải quyết
Phân cấp: Phân hạng hoặc sắp xếp trật tự đối tượng
theo các quan hệ trên dưới
Lập trình máy tính
Lập trình
Trang 47 LT thu thập/quản lý dữ liệu quá trình
LT giao diện người-máy (đồ họa)
Trang 48Chương trình = Thuật toán + Cấu trúc dữ liệuLập trình
Chương trình
Trang 50Ngôn ngữ lập trình là một ngôn ngữ nhân tạo được thiết kế để trao đổi các lệnh với thiết bị, đặc biệt là các máy tính.
Lập trình
Ngôn ngữ lập trình
Trang 51 Các bước phát triển một chương trình
Xác định vấn đề của bài toán,
Triển khai cách thức thực hiện,
Xác định thuật toán
Xây dựng thuật toán / thuật giải,
Kiểm tra tính đúng đắn của thuật toán,
Phân tích thuật toán,
Thực hiện thuật toán,
Chạy thử và kiểm tra chương trình,
Tối ưu chương trình
Hệ thống hóa tài liệu hướng dẫn, lưu trữ.
Lập trình
Phát triển C.Trình
Trang 52“Là một dãy các thao tác xác định trên một đối tượng, sao cho sau khi thực hiện một số hữu hạn các bước thì đạt được mục tiêu”.
Thuật toán = Logic + Điều khiển Thuật toán
Định nghĩa
Trang 53Khái niệm về thuật toán
Tính chất của thuật toán
Trang 54Khái niệm về thuật toán
Các dạng biểu diễn của thuật toán
Trang 55Đầu vào: a, b thuộc R
Đầu ra: nghiệm phương trình ax + b = 0
Thuật toán
Tính chất
Trang 56Khái niệm về thuật toán
Bằng ngôn ngữ tự nhiên (IPO)
Input : ly, đường, chanh, nước nóng, muỗng.
Thuật toán pha nước chanh
Thuật toán
Tính chất
Trang 57Hướng (luồng) thực hiện của lưu đồ
Bằng lưu đồ thuật toán
Thuật toán
Tính chất
Trang 58Khái niệm về thuật toán
Bằng lưu đồ thuật toán
Đưa dữ liệu ra hiển thị (display)
Chuẩn bị điều kiện cho các chương trình con hay cho các khối điều kiện.
Gọi chương trình con (Procedure, Function)
Kết nối tới một điểm trên trang khác
Kết nối tới một điểm trên cùng một trang
Thuật toán
Tính chất
Trang 59Khái niệm về thuật toán
Bằng lưu đồ thuật toán
Thuật toán giải PT bậc 1
Trang 60Khái niệm về thuật toán
Biểu diễn bằng mã giả (Pseudo code)
If a = 0 Then Begin
Xuất “Phương trình có nghiệm x = -b/a”
Đầu vào: a, b thuộc R
Đầu ra: nghiệm phương trình ax + b = 0
Thuật toán
Tính chất
Trang 61Triển khai thuật toán
Kiểu dữ liệu thực hiện trong chương trình?
Dữ liệu là hằng số?
Cần những kiểu biến nào?
Bao nhiêu biến?
Kiểu biến (bit, byte, int, float…)?
Đăt tên biến?
Các lệnh trong ngôn ngữ lập trình tương?
Input : scanf(), LD, L, A,….
Output : printf(), =, S, R,…
Bắt đầu và kết thúc: start/end of main() function, end, OB
Các bước thực hiện: tuần tự, lựa chọn, lặp
Thuật toán
Tính chất
Trang 62Hãy đưa ra thuật toán thực hiện những bài toán sau bằng các phương pháp biểu diễn đã học:
1 Nhập năm sinh của một người Tính tuổi người đó.
2 Nhập 2 số a và b Tính tổng, hiệu, tính và thương của hai số đó.
3 Nhập tên sản phẩm, số lượng và đơn giá Tính tiền và thuế giá trị gia tăng phải trả, biết:
tiền = số lượng * đơn giá thuế giá trị gia tăng = 10% tiền
4 Nhập điểm thi và hệ số 3 môn Toán, Lý, Hóa của một sinh viên Tính điểm trung bình của sinh viên đó
Ôn tập – Thảo luận
Trang 635 Nhập bán kính của đường tròn Tính chu vi và diện tích của hình tròn đó.
6 Nhập bốn chữ số Xác định số hàng đơn vị của tổng bốn chữ số đó?
7 Nhập vào 2 số nguyên Tính min và max của hai
Trang 649 Trình bày thuật toán chuyển đổi một số nguyên thành tổ hợp các mã BCD phục vụ cho việc hiển thị.
10 Tính tốc độ quay của động cơ (v/ph) khi hệ thống đo gửi tín hiệu về máy tính tương ứng với mỗi vòng quay là 1 xung tín hiệu.
11 Trình bày thuật toán cho hệ thống điều khiển bể đong nguyên liệu.
12 Trình bày thuật toán điều khiển cho hệ thống đèn tín hiệu giao thông ở ngã tư.
13 Trình bày thuật toán điều khiển cho một máy bán
cà phê tự động.
Ôn tập – Thảo luận
Trang 65Input A, B, C
“Nhập A, B, C”
Thuật toán
Tính chất
Trang 66-B
=2A
D
“Phương trình có hai nghiệm :”
X1=X REAL +iX IMAGE
X2=X REAL -iX IMAGE
Tính chất
Trang 67Chương III
NGÔN NGỮ LẬP TRÌNH C
Trang 68© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Trang 69 Dennis Ritchie tại Bell Telephone năm 1972.
Tiền thân của ngôn ngữ B , KenThompson, cũng tại B ell Telephone.
Là ngôn ngữ lập trình phát triển UNIX
Là ngôn ngữ lập trình có cấu trúc và phân biệt chữ HOA – chữ thường ( case sensitive )
Chuẩn hóa ANSI/ISO 9899: 1990
Giới thiệu chung
Trang 70© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Câu Lệnh
Các lệnh nhập xuất
Giới thiệu
Ưu điểm của C
Rất mạnh và linh động , có khả năng thể hiện bất cứ ý tưởng nào.
Được sử dụng rộng rãi bởi các nhà lập trình chuyên nghiệp.
Có tính khả chuyển , ít thay đổi trên các hệ thống máy tính khác nhau (portable).
Rõ ràng, cô đọng
Lập trình đơn thể , tái sử dụng thông qua hàm.
Giới thiệu chung
Trang 71 Biên tập chương trình nguồn (Trình EDIT ).
Biên dịch chương trình (Trình COMPILE ).
Chạy chương trình nguồn (Trình RUNTIME ).
Sửa lỗi chương trình nguồn (Trình DEBUG ).
Giới thiệu chung
Trang 72© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Câu Lệnh
Các lệnh nhập xuất
Giới thiệu
Môi trường lập trình
Borland C++ 3.1 for DOS.
Visual C++ 6.0, Win32 Console Application
Giới thiệu chung
Trang 73void main() {
Thân chương trình chính
Cấu trúc chương
trình C
Trang 74© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Trang 75Cấu trúc chương
trình C
Trang 76© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Trang 77 Các từ dành riêng trong ngôn ngữ.
Không thể sử dụng từ khóa để đặt tên cho biến, hàm, tên chương trình con.
Một số từ khóa thông dụng:
const, enum, signed, struct, typedef, unsigned…
char, double, float, int, long, short, void
case, default, else, if, switch
do, for, while
break, continue, goto, return
Thành phần trong
NNLT-C
Trang 78© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Câu Lệnh
Các lệnh nhập xuất
Tên/Định danh (Identifier)
Một dãy ký tự dùng để chỉ tên một hằng số, hằng ký tự, tên một biến, một kiểu dữ liệu, một hàm một hay thủ tục.
Không được trùng với các từ khóa và được tạo thành từ các chữ cái và các chữ số nhưng bắt buộc chữ đầu phải là chữ cái hoặc _.
Số ký tự tối đa trong một tên là 255 ký tự và được dùng ký
tự ’_’ chèn trong tên nhưng không cho phép chèn giữa các
khoảng trắng
Thành phần trong
NNLT-C
Trang 79Tên/Định danh (Identifier)
Khi khai báo biến nên đặt tên biến theo quy tắc Hungarian Notation
Ví dụ
int ituoi ; //khai báo biến ituoi có kiểu int
float fTrongluong ;
//khai báo biến fTrongluong có kiểu long
char ckitu1, ckitu2;
//khai báo biến ckitu1, ckitu2 có kiểu char
Thành phần trong
NNLT-C
Trang 80© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Câu Lệnh
Các lệnh nhập xuất
Ví dụ: Tên/Định danh (Identifier)
Các tên hợp lệ: GiaiPhuongTrinh, Bai_Tap1
Các tên không hợp lệ: 1A, Giai Phuong Trinh
Phân biệt chữ hoa chữ thường , do đó các tên sau đây khác nhau:
A, a
BaiTap, baitap, BAITAP, bAItaP, …
Thành phần trong
NNLT-C
Trang 81 Đặt giữa cặp dấu /* */ hoặc // (C++)
Ví dụ: /* Ho & Ten: NVA */ , // MSSV: 0712078
Trang 82© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Trang 83Turbo C có 4 kiểu cơ sở như sau :
Kiểu số nguyên : giá trị của nó là các số nguyên như 2912,
-1706, …
Kiểu số thực : giá trị của nó là các số thực như 3.1415, 29.12, -17.06, …
Kiểu logic : giá trị đúng hoặc sai (True/False).
Kiểu ký tự : 256 ký tự trong bảng mã ASCII.
Thành phần trong
NNLT-C
Trang 84© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Độ lớn (Byte)
Miền giá trị (Range)
Trang 85Các kiểu số nguyên (không dấu)
n bit không dấu: 0 … 2n – 1
Kiểu (Type)
Độ lớn (Byte)
Miền giá trị (Range)
Trang 86© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Kiểu (Type)
Độ lớn (Byte)
Miền giá trị (Range)
Thành phần trong
NNLT-C
Trang 87 C ngầm định một cách không tường minh:
false (sai): giá trị 0.
true (đúng): giá trị khác 0, thường là 1.
Trang 88© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Tên kiểu: char
Miền giá trị: 256 ký tự trong bảng mã ASCII.
Chính là kiểu số nguyên do:
Lưu tất cả dữ liệu ở dạng số.
Không lưu trực tiếp ký tự mà chỉ lưu mã ASCII của ký tự đó.
Ví dụ
Lưu số 65 tương đương với ký tự ‘A’…
Lưu số 97 tương đương với ký tự ‘a’.
Thành phần trong
NNLT-C
Trang 89Kiểu dữ liệu <Tên biến> ;
Kiểu dữ liệu <Danh sách tên biến>;
Ví dụ
int ituoi ; //khai báo biến ituoi có kiểu int
float fTrongluong ; //khai báo biến fTrongluong có
Trang 90© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
Gán đồng thời
void main() {
int a = 1, b = 2, c
= 5;
… }
Thành phần trong
NNLT-C
Trang 92© BM Tự động hóa xí nghiệp Mỏ và Dầu Khí
Giới thiệu chung
Ôn tập – Thảo luận
#define <tên hằng> <giá trị>
hoặc sử dụng từ khóa const.
Ví dụ
#define MAX 100
#define PI 3.14 const int MAX = 100 ;
const float PI = 3.14 ;
Thành phần trong
NNLT-C
Trang 93 Thường được sử dụng trong lập trình.
Gán giá trị cho biến.