Hướng dẫn pha thuốc ép tóc chuẩn
Hướng dẫn phá pass Access đơn giản
MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG C
1.1. Bộ ký tự
Mọi ngôn ngữ lập trình đều được xây dựng từ một bộ ký tự nào đó. Ngôn ngữ C được xây dựng trên bộ ký tự sau:
26 chữ cái hoa : A B C .. Z
26 chữ cái thường : a b c .. z
10 chữ số : 0 1 2 .. 9
Các ký hiệu toán học : + - * / = ( )
Ký tự gạch nối : _
Các ký tự khác : . , : ; [ ] {} ! \ & % # $ ...
Dấu cách (space) dùng để tách các từ.
@Lưu ý: Khi viết chương trình, ta không được sử dụng bất kỳ ký tự nào khác ngoài các ký tự trên.
1.2 Từ khóa
Từ khoá là những từ được sử dụng để khai báo các kiểu dữ liệu, để viết các toán tử và các câu lệnh. Bảng dưới đây liệt kê các từ khoá của TURBO C:
Asm |
break |
case |
cdecl |
Char |
const |
continue |
default |
Do |
double |
else |
enum |
extern |
far |
float |
for |
Goto |
huge |
if |
int |
interrupt |
long |
near |
pascal |
register |
return |
short |
signed |
sizeof |
static |
struct |
switch |
tipedef |
union |
unsigned |
void |
volatile |
while |
- Không được dùng các từ khoá để đặt tên cho các hằng, biến, mảng, hàm,...
- Từ khoá phải được viết bằng chữ thường, ví dụ: viết từ khoá khai báo kiểu nguyên là int chứ không phải là INT.
1.3 Tên
Khái niệm tên rất quan trọng trong quá trình lập trình, nó không những thể hiện rõ ý nghĩa trong chương trình mà còn dùng để xác định các đại lượng khác nhau khi thực hiện chương trình. Tên thường được đặt cho hằng, biến, mảng, con trỏ, nhãn,… Chiều dài tối đa của tên là 32 ký tự.
Tên biến hợp lệ là một chuỗi ký tự liên tục gồm: Ký tự chữ, số và dấu gạch dưới. Ký tự đầu của tên phải là chữ hoặc dấu gạch dưới. Khi đặt tên không được đặt trùng với các từ khóa.
Ví dụ 1.1:
Các tên đúng: delta, a_1, Num_ODD, Case
Các tên sai:
3a_1 (ký tự đầu là số)
num-odd (sử dụng dấu gạch ngang)
int (đặt tên trùng với từ khóa)
del ta (có khoảng trắng)
f(x) (có dấu ngoặc tròn)
Ví dụ 1.2: number khác Number
case khác Case (case là từ khóa, do đó bạn đặt tên là Case vẫn đúng)
@Lưu ý: Trong C, tên phân biệt chữ hoa, chữ thường
1.4 Kiểu dữ liệu
Có 4 kiểu dữ liệu cơ bản trong C là: char, int, float, double.
TT |
Kiểu dữ liệu |
Kích thước |
Miền giá trị |
1 2 3 4 5 6 7 8 9 10 11 |
unsigned char char enum unsigned int short int int unsigned long long float double long double |
1 byte 1 byte 2 bytes 2 bytes 2 bytes 2 bytes 4 bytes 4 bytes 4 bytes 8 bytes 10 bytes |
0 đến 255 – 128 đến 127 – 32,768 đến 32,767 0 đến 65,535 – 32,768 đến 32,767 – 32,768 đến 32,767 0 đến 4,294,967,295 – 2,147,483,648 đến 2,147,483,647 3.4 * 10–38 đến 3.4 * 1038 1.7 * 10–308 đến 1.7 * 10308 3.4 * 10–4932 đến 1.1 * 104932 |
1.5 Lời chú thích
Trong khi lập trình cần phải ghi chú để giải thích các biến, hằng, thao tác xử lý giúp cho chương trình rõ ràng dễ hiểu, dễ nhớ, dễ sửa chữa và để người khác đọc vào dễ hiểu. Trong C có các ghi chú sau: // hoặc /* nội dung ghi chú */
Tóm lại, đối với ghi chú dạng // dùng để ghi chú một hàng và dạng /* …. */ có thể ghi chú một hàng hoặc nhiều hàng.
CẤU TRÚC CỦA MỘT CHƯƠNG TRÌNH C
Một chương trình bao gồm một hoặc nhiều hàm, mỗi hàm được người lập trình tổ chức để giải quyết một hoặc một số công việc nào đó của bài toán cần giải quyết. Một chương trình C để có thể thực thi được luôn cần phải có hàm main().
Cấu trúc cơ bản của chương trình như sau:
• Các #include ( dùng để khai báo sử dụng các hàm chuẩn)
• Các #define ( dùng để định nghĩa các hằng )
• Khai báo các đối tượng dữ liệu ngoài ( biến, mảng, cấu trúc vv..).
• Khai báo nguyên mẫu các hàm.
• Hàm main().
• Định nghĩa các hàm ( hàm main có thể đặt sau hoặc xen vào giữa các hàm khác).
Ví dụ 1.3:
1
2
3
4
5
6
7
8
9
|
#include //k.báo sử dụng thư viện xuất/nhập chuẩn của C void main( void ) { double x,y; //Khai báo 2 biến x,y //kiểu số thực printf ( "\n Nhap x va y" ); //xuất dữ liệu ra màn hình scanf ( "%lf%lf" ,&x,&y); //nhập dữ liệu từ bàn phím //và lưu vào vùng địa chỉ //cấp cho 2 biến x,y*/ } |
- Mỗi câu lệnh có thể viết trên một hay nhiều dòng nhưng phải kết thúc bằng dấu (;).
- Trong chương trình, khi ta sử dụng các hàm chuẩn, ở đầu chương trình ta phải khai báo sử dụng, ví dụ: #include "stdio.h".
HẰNG - BIẾN - TOÁN TỬ - BIỂU THỨC
3.1 Khai báo hằng
Hằng là các đại lượng mà giá trị của nó không thay đổi trong quá trình tính toán. Nguyên tắc đặt tên hằng theo nguyên tắc đặt tên của C.
+ Khai báo
Cú pháp:
#define
Diễn giải:
#define: Từ khóa để định nghĩa một biến hằng
: là tên của hằng mà ta cần định nghĩa
: Giá trị khởi gán cho hằng
Ví dụ:
#define MAX 1000
Lúc này, tất cả các tên MAX trong chương trình xuất hiện sau này đều được thay bằng 1000. Vì vậy, ta thường gọi MAX là tên hằng, nó biểu diễn số 1000.
3.2 Khai báo biến
+ Khai báo
Cú pháp:
;
Diễn giải:
- : là kiểu dữ liệu muốn khai báo cho biến
- : gồm các tên biến có cùng kiểu dữ liệu, mỗi tên biến cách nhau dấu phẩy (,), cuối cùng là dấu chấm phẩy (;).
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 float
char cKyTu1, cKyTu2; //khai báo biến cKyTu1, cKyTu2 có kiểu char
+ Vừa khai báo vừa khởi gán giá trị cho biến
Có thể kết hợp việc khai báo với toán tử gán để biến nhận ngay giá trị lúc mới khai báo.
Ví dụ
Khai báo trước, gán giá trị sau
1
2
3
4
5
6
7
8
|
void main( void ) { int a, b, c; a = 1; b = 2; c = 5; … } |
Vừa khai báo vừa gán giá trị:
1
2
3
4
5
|
void main( void ) { int a = 1, b = 2, c = 5; … } |
+ Phạm vi của biến
Khi lập trình, phải nắm rõ phạm vi của biến. Nếu khai báo và sử dụng không đúng, không rõ ràng sẽ dẫn đến sai sót khó kiểm soát được.
a. Khai báo biến ngoài (biến toàn cục):
Vị trí biến đặt bên ngoài tất cả các hàm, cấu trúc...Các biến toàn cục có ảnh hưởng đến toàn bộ chương trình. Chu trình sống của nó là bắt đầu từ khi chạy chương trình đến lúc kết thúc chương trình.
b. Khai báo biến trong (biến cục bộ):
Vị trí biến đặt bên trong hàm, cấu trúc…. Chỉ ảnh hưởng nội bộ bên trong hàm, cấu trúc đó…. Chu trình sống của nó bắt đầu từ lúc hàm, cấu trúc được gọi thực hiện đến lúc thực hiện xong.
3.3 Biểu thức
Biểu thức là sự phối hợp của những toán tử và toán hạng.
Ví dụ:
a + b
b = 1 + 5 * 2/i
a = 6 % (7 + 1)
x++ * 2/4 + 5 – power(i, 2)
Toán hạng sử dụng trong biểu thức có thể là hằng số, biến, hàm.
3.4 Phép toán
Trong C có 4 nhóm toán tử chính yếu sau đây:
+ Phép toán số học
+ : phép cộng
– : phép trừ
* : phép nhân
/ : phép chia
% : phép chia lấy phần dư, được áp dụng trên các toán hạng có kiểu dữ liệu char, int, long
+ Phép toán quan hệ
> : lớn hơn
>= : lớn hơn hoặc bằng
< : nhỏ hơn
<= : nhỏ hơn hoặc bằng
== : bằng
!= : khác
@Lưu ý:
- Kết quả của phép toán quan hệ là số nguyên kiểu int, bằng 1 nếu đúng, bằng 0 nếu sai.
- Phép toán quan hệ ngoài toán hạng được sử dụng là kiểu dữ liệu số hoặc kiểu dữ liệu char.
+ Phép toán logic
! : (phép toán Phủ định)
&&: (phép toán Và)
|| : (phép Hoặc)
+ Phép toán trên bit (bitwise)
& : và(AND)
| : hoặc (OR)
^ : hoặc loại trừ (XOR)
>> : dịch phải
<< : dịch trái
~ : đảo
+ Phép gán hợp
Biểu thức gán là biểu thức có dạng:
v=e
Trong đó v là một biến (hay phần tử mảng ), e là một biểu thức. Giá trị của biểu thức gán là giá trị của e, kiểu của nó là kiểu của v. Nếu đặt dấu ; vào sau biểu thức gán ta sẽ thu được phép toán gán có dạng:
v=e;
Biểu thức gán có thể sử dụng trong các phép toán và các câu lệnh như các biểu thức khác. Ví dụ như khi ta viết
a=b=5;
thì điều đó có nghĩa là gán giá trị của biểu thức b=5 cho biến a. Kết qủa là b=5 và a=5.
Hoàn toàn tương tự như :
a=b=c=d=6; gán 6 cho cả a, b, c và d
z=(y=2)*(x=6); { ở đây * là phép toán nhân }
gán 2 cho y, 6 cho x và nhân hai biểu thức lại cho ta z=12.
+ Phép toán tăng giảm
C đưa ra hai phép toán một ngôi để tăng và giảm các biến (nguyên và thực). Toán tử tăng là ++ sẽ cộng 1 vào toán hạng của nó, toán tử giảm là -- sẽ trừ toán hạng đi 1.
Ví dụ
n=5
m=4
++n Cho ta n=6
--m Cho ta m=3
Ta có thể viết phép toán ++ và -- trước hoặc sau toán hạng: ++n, n++, --n, n--.
Sự khác nhau của ++n và n++ ở chỗ : trong phép n++ thì tăng giá trị của biến n lên 1 sau khi giá trị của nó đã được sử dụng, còn trong phép ++n thì n được tăng trước khi sử dụng. Sự khác nhau giữa n-- và --n cũng như vậy.
+ Toán tử điều kiện
Cú pháp:
?:
Diễn giải:Nếu biểu thức điều kiện có giá trị đúng thì kết quả là , nếu sai kết quả là
Ví dụ:
a=2
b=5
max=(a>b)? a:b;
kết quả là max = 5
Lập trình C cho vi điều khiển
Để có thể lập trình C cho vi điều khiển, cần học những gì ở ngôn ngữ C:
Ngôn ngữ C cho vi điều khiển tuân theo chuẩn C, ngoài ra bổ sung thêm các kiểu dữ liệu khác phụ thuộc riêng vào từng loại vi điều khiển. Nên khi nói đến khái niệm "tệp lệnh" trong khi lập trình C thì nó bao hàm tất cả các lệnh cơ bản của C và các kiểu dữ liệu này mà thôi, nên đừng đi hỏi là tệp lệnh là gì ? mà hãy xem trong manual của trình biên dịch đó xem.
Nói đến trình biên dịch mới nhớ là: các định nghĩa, kiểu dữ liệu, ... nó phụ thuộc thêm vào các trình biên dịch C riêng biệt. Ví dụ với PIC16 thì khi viết bằng HTPIC thì khai báo configuration khác với khi viết bằng CCS, cái này được nói trong mỗi manual của trình biên dịch.
Các bạn có thể xem bài viết Thư viện giao tiếp RS232 cho PIC18 bằng HTPIC18 thì những kiến thức để viết được nó rất đơn giản, chẳng có gì cả. Cái quan trọng là viết cái gì ở trong đó. Câu trả lời nằm ở datasheet của từng module của vi điều khiển. Các tên đặc biệt trong đó là nằm trong thư viện của trình biên dịch đó thôi. Bao giờ mỗi trình biên dịch cũng có các file header định nghĩa các thanh ghi của vi điều khiển, thường là giống với tên trong datasheet, nhưng có thể là không giống nên chỉ cần mở cái đó ra là được.
Thông thường, các vi điều khiển hiện nay khi giao tiếp với một cái gì đó thì nó có riêng một module và có riêng một chương trong mỗi datasheet của vi điều khiển hướng dẫn đầy đủ, cách active module thế nào, cách giao tiếp như thế nào.
Kết luận
Để có thể viết 1 chương trình cho vi điều khiển cần có các yếu tố sau:
Lập trình viên
Cách tự học lập trình hiệu quả nhất
Hướng dẫn học lập trình plc s7-200 đơn giản
Hướng dẫn học lập trình web bằng HTML cơ bản
Cách tư duy lập trình giúp công việc bạn nhanh hơn
Hướng dẫn học lập trình Excel căn bản
(St)