mở đầu và điểm kết thúc chƣơng trình. printf(“Hello everybody!!!”); là lệnh hiển thị dòng chữ “Hello everybody!!!” ra màn hình.8 : Chƣơng trình hiển thị lên màn hình dòng chữ “Hello everybody!!!” có sử dụng hàm tự tạo.h” void Hello(); void main() { Hello(); } void Hello() { printf(“Hello everybody!!!”); } Kết quả thực thi chƣơng trình 13 Ở ví dụ 1.8 ta thấy cách gọi hàm trong ngôn ngữ lập trình C, hàm main() là hàm chính bắt buộc phải có trong mỗi chƣơng trình. Hàm Hello() đƣợc hàm main() gọi đến để thực hiện. Cả ví dụ 1 và ví dụ 2 đều cùng thực hiện việc in ra câu: Hello everybody!!!.
Nhƣng ở đây cho thấy hai cách thể hiện của một câu lệnh trong ngôn ngữ lập trình C. Thƣ viện hàm chuẩn C Thƣ viện hàm chuẩn C là tập hợp các hàm đã đƣợc xây dựng trƣớc. Mỗi thƣ viện hàm chứa các hàm theo một công dụng riêng. Tất cả trình biên dịch C đều chứa một thƣ viện hàm chuẩn.
Một hàm đƣợc viết bởi lập trình viên có thể đƣợc đặt trong thƣ viện và đƣợc dùng khi cần thiết. Một số trình biên dịch cho phép thêm hàm vào thƣ viện chuẩn. Một số thƣ viện chuẩn trong C: stdio.h: Tập tin định nghĩa các hàm vào/ra chuẩn (standard input/output). Gồm các hàm in dữ liệu (printf()), nhập giá trị cho biến (scanf()), nhận ký tự từ bàn phím (getc()), in ký tự ra màn hình (putc()), nhận một dãy ký tự từ bàm phím (gets()), in chuỗi ký tự ra màn hình (puts()), xóa vùng đệm bàn phím (fflush()), fopen(), fclose(), fread(), fwrite(), getchar(), putchar(), getw(), putw()… conio.h : Tập tin định nghĩa các hàm vào ra trong chế độ DOS (DOS console).
Gồm các hàm clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol(),… math.h: Tập tin định nghĩa các hàm tính toán gồm các hàm abs(), sqrt(), log().h: Tập tin định nghĩa các hàm liên quan đến việc quản lý bộ nhớ. Gồm các hàm calloc(), realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(), … io.h: Tập tin định nghĩa các hàm vào ra cấp thấp. Gồm các hàm open(), _open(), read(), _read(), close(), _close(), creat(), _creat(), creatênew(), eof(), filelength(), lock(),… graphics.h: Tập tin định nghĩa các hàm liên quan đến đồ họa. Ƣu và nhƣợc điểm 1.
Ƣu điểm Ngôn ngữ lập trình C là một ngôn ngữ mạnh, mềm dẻo và có thể truy nhập vào hệ thống, nên thƣờng đƣợc sử dụng để viết hệ điều hành, các trình điều khiển thiết bị, đồ họa, có thể xây dựng các phân mềm ngôn ngữ khác , … 14 Ngôn ngữ lập trình C có cấu trúc module, từ đó ta có thể phân hoạch hay chia nhỏ chƣơng trình để tăng tính hiệu quả, rõ ràng, dễ kiểm tra trong chƣơng trình. Nhƣợc điểm Một số kí hiệu của ngôn ngữ lập trìnhC có nhiều ý nghĩa khác nhau. Ví dụ toán tử * là toán tử nhân, cũng là toán tử thay thế, hoặc dùng khai báo con trỏ. Việc sử dụng đúng ý nghĩa của các toán tử phụ thuộc vào ngữ cảnh sử dụng.
Vì C là một ngôn ngữ mềm dẻo, đó là do việc truy nhập tự do vào dữ liệu, trộn lẫn các dữ liệu, …Từ đó, dẫn đến sự lạm dụng và sự bất ổn của chƣơng trình. 15 Bài tập chƣơng 1 1. Viết chƣơng trình xuất ra câu thông báo: “Chao ban den voi ngon ngu C”. Viết chƣơng trình xuất ra đoạn thông báo: “Chao ban! Day la chuong trinh C dau tien.
Vui long nhan phim Enter de ket thuc. Viết chƣơng trình nhập vào 1 số nguyên, xuất ra màn hình số nguyên vừa nhập. Viết chƣơng trình nhập vào 2 số nguyên, Tính và xuất kết quả tổng, tích 2 số nguyên vừa nhập. Viết chƣơng trình nhập vào 2 số nguyên a, b.
Xuất kết quả khi a chia cho b. KIỂU DỮ LIỆU VÀ PHÉP TOÁN 2. Kí hiệu Tập kí tự hợp lệ trong ngôn ngữ C bao gồm: 52 chữ cái : A,B,C, … ,Z và a,b,c, … ,z 10 chữ số : 0,1,2,3,4,5,6,7,8,9 Các kí hiệu toán học: +, -, *, /, =, <, >, (, ) Ký tự gạch nối : _ ( chú ý phân biệt với dấu trừ “ - ” ) Các kí tự đặt biệt nhƣ : ., ; : [ ] {} ? ! \ & \ | # $ " ' @ ^… Dấu cách (khoảng trắng) dùng để phân cách giữa các từ. Tên Tên là một dãy các ký tự liền nhau bắt đầu bằng chữ cái hoặc ký tự gạch dƣới theo sau là chữ cái, dấu gạch dƣới, chữ số.
Một tên không đƣợc chứa các kí tự đặc biệt nhƣ dấu cách, dấu chấm câu,… Ví dụ 2.1: Những tên hợp lệ: x1, chieudai, hoc_sinh, diem_mon_2, _abc, _x_y_z_2,… Những tên không hợp lệ: 123, 1_xyz, bien#, ma so sinh vien, … 2. Từ khóa Các từ sử dụng để dành riêng trong ngôn ngữ lập trình C gọi là từ khoá (keyword). Mỗi một từ khoá có một ý nghĩa riêng của nó. Các từ khóa không đƣợc sử dụng làm các biến, hằng, không đƣợc đƣợc định nghĩa lại các từ khoá.
Bảng liệt kê các từ khoá : auto break case char continue default do double else extern float for gotoif int long register return short sizeof static struct switch typedef sizeof static struct switch typedef union_cs Unsigned _ds void_es while_ss union unsigned void while _cs _ds _es _ss _AH _AL _AX _BH _BL _BX _CH _CL _CX _DH _DL _DX _BP _DI _SI _SP 2. Chú thích 17 Chú thích là những dòng mô tả diễn tả ý nghĩa câu lệnh đang dùng, giải thích ý nghĩa của một hàm nào đó giúp ngƣời lập trình dễ nhớ, dễ hình dung đƣợc câu lệnh đang làm. Trình biên dịch không biên dịch các phần ghi chú trong chƣơng trình. Khi viết chƣơng trình đôi lúc ta cần phải có vài lời ghi chú về một đoạn chƣơng trình nào đó để dễ nhớ và dễ điều chỉnh sau này.
Phần nội dung ghi chú này khi biên dịch sẽ đƣợc bỏ qua. Trong ngôn ngữ lập trình C, nội dung chú thích phải đƣợc viết trong cặp dấu /* và */.h> int main () { /* khai bao bien ten kieu char 50 ky tu */ char ten[50]; /*Xuat chuoi ra man hinh*/ printf(“Xin cho biet ten cua ban: ”); /*Doc vao 1 chuoi la ten cua ban*/ scanf(“%s”,ten); printf(“Xin chao ban %s\n ”,ten); printf(“Chao mung ban den voi NNLT C”); /*Dung chuong trinh, cho go phim*/ getch(); return 0; } Kết quả thực thi của chƣơng trình: Ngoài ra, nếu chú thích chỉ nằm trên một dòng ta có thể sử dụng kí hiệu //.h> int main () { 18 char ten[50]; //khai báo biến kiểu char 50 ký tự //Xuat chuoi ra man hinh printf(“Xin cho biet ten cua ban !”); scanf(“%s”,ten); //Doc vao 1 chuoi ten cua ban. Printf (“Xin chao ban %s\n ”,ten); printf(“Chao mung ban den voi NNLT C”); //Dung chuong trinh, cho go phim getch(); return 0; } Kết quả thực thi chƣơng trình: 2. Biến Biến là một khái niệm đại diện cho một giá trị dữ liệu cần lƣu trữ tạm thời để tái sử dụng trong các câu lệnh phía sau trong khoảng thời gian chƣơng trình thực thi.
Sau khi kết thúc chƣơng trình, biến này sẽ bị hủy. Giá trị này có thể bị thay đổi khi chƣơng trình thực thi. Khi biến đƣợc tạo sẽ xuất hiện một vùng nhớ để lƣu trữ giá trị của biến. Một biến có một tên có ý nghĩa đại diện cho một vị trí vùng nhớ.
Tên biến giúp chúng ta truy cập vào vùng nhớ mà không cần dùng địa chỉ của vùng nhớ đó. Hệ điều hành đảm nhiệm việc cấp bộ nhớ còn trống cho những biến này mỗi khi ngƣời dùng cần sử dụng. Ðể tham chiếu đến một giá trị cụ thể trong bộ nhớ, chúng ta chỉ cần dùng tên của biến. Cú pháp: <tên kiểu dữ liệu> <tên biến> [=<giá trị 1>] 2.
Các kiểu dữ liệu chuẩn 2. Kiểu char Trong ngôn ngữ lập trình C chúng ta có thể xử lý dữ liệu là các chữ viết (kí tự). Các kí tự này là các chữ viết thƣờng dùng nhƣ các chữ cái A,B,C….Z, a,b,c,… z; các chữ số 0,1,2,…9; các dấu chấm câu ; , ! … Kiểu kí tự đƣợc biễu diễn trong ngôn ngữ lập trình C với từ khóa char. Kiểu char có chiều dài là 1 byte dùng để lƣu giữ một kí tự và có miền giá trị trong khoảng – 128…127.
Ta khai báo kiểu kí tự nhƣ sau: Cú pháp: char <tên biến> 19 Ví dụ 2.4: char ch ; // khai báo ch là kiểu kí tự Một hằng kí tự đƣợc biểu diễn bằng chữ viết nằm giữa hai dấu phẩy „ ‟.5: „a‟ , „A‟ , „z ‟ , „ * ‟ , „ ! ‟ , ‟5‟… Muốn truy xuất giá trị của một biến kí tự ta dùng kí hiệu đại diện % c. Khi đó, giá trị của biến đƣợc gọi sẽ hiển thị tại kí tự %c.6: Chƣơng trình sau sẽ xuất ra màn hình kí tự của ch, với biến ch đƣợc khởi tạo trƣớc.h> void main () { /* khai báo biến ch có kiểu char */ char ch ; /* khởi tạo cho biến ch có giá trị là „A‟ */ ch = „A‟; /* xuất chuỗi kèm theo giá trị biến ch*/ printf(“Ki tu %c la gia tri cua ch”,ch) ; } Kết quả thực thi chƣơng trình Ví dụ 2.7: Chƣơng trình sau nhận một kí tự từ bàn phím và sau đó hiển thị kí tự đó ra màn hình: #include<stdio.h> void main( ) { char ch; printf(“nhap ch= “); scanf(“%c”,&ch); //đọc kí tự ch từ bàn phím printf(“Ki tu %c la gia tri cua ch”,ch); } Kết quả thực thi chƣơng trình 20 Một số kí tự đặc biệt của bảng mã ASCII: Kí tự Dãy mã Giá trị trong bảng mã ASCII Ý nghĩa Hexa- Decimal BEL \a 0x07 7 Tiếng chuông BS \b 0x08 8 Xóa trái (backspace) HT \t 0x09 9 Nhẩy cách ngang (tab) VT \v 0x0B 11 Nhẩy cách đứng LF \n 0x0A 10 Xuống dòng mới (newline) FF \f 0x0C 12 Xuống dòng dƣới(form feed) CR \r 0x0D 13 Về đầu dòng(carriage return) “ \” 0x22 34 Dấu “ „ \‟ 02x27 39 Dấu „ ? \? 0x3F 63 Dấu ? \ \\ 0x5C 92 Dấu \ NULL \0 0x00 00 Mã NULL 2. Kiểu int Trong ngôn ngữ lập trình C, có nhiều loại kiểu số nguyên với các miền giới hạn khác nhau. Kiểu số nguyên cơ bản nhất đƣợc định nghĩa với từ khoá int.
Tuy nhiên trên máy tính chỉ biễu diễn đƣợc một phần nhỏ của tập hợp các số nguyên. Mỗi 15 15 biến kiểu int chiếm 2 bytes trong bộ nhớ, miền giá trị của kiểu int từ -2 đến 2 –1. Khai báo: int tên biến ; Ví dụ 2.8: int N; // khai báo biến N là một số kiểu int Khi truy xuất giá trị của một biến kiểu số nguyên ta dùng kí hiệu đại diện %d.9: Chƣơng trình sau nhận giá trị của ba cạnh tam giác, sau đó xuất ra chu vi của tam giác đó: #include<stdio.