Bài giảng Lập trình C - Chương 2: Giới thiệu ngôn ngữ C - Trần Minh Thái
Giới thiệu ngôn ngữ lập trình C
Sử dụng công cụ hỗ trợ lập trình
Cấu trúc và cách thực thi chương trình
Các khái niệm, ký hiệu, quy tắc trong C
Kiểu dữ liệu cơ sở
Các toán tử
Các hàm thư viện C cơ bản
Bài tập
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình C - Chương 2: Giới thiệu ngôn ngữ C - Trần Minh Thái", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Lập trình C - Chương 2: Giới thiệu ngôn ngữ C - Trần Minh Thái
Lập trình C Chương 2. Giới thiệu ngôn ngữ C(6 tiết) Trần Minh Thái Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn Cập nhật: 26/10/2016 1 Mục tiêu Giới thiệu ngôn ngữ lập trình C Sử dụng công cụ hỗ trợ lập trình Cấu trúc và cách thực thi chương trình Các khái niệm, ký hiệu, quy tắc trong C Kiểu dữ liệu cơ sở Các toán tử Các hàm thư viện C cơ bản Bài tập Lịch sử ra đời Ngôn ngữ C do Dennis Ritchie xây dựng từ năm 1972 tại Bell Labs (AT&T) với mục đích tạo ngôn ngữ để viết HĐH UNIX “The C programming language” do Kernighan và Ritchie viết năm 1978 Năm 1983, viện chuẩn quốc gia Mỹ (American National Standards Institute - ANSI) thành lập một tiểu ban để chuẩn hóa C - ANSI Standard C 3 Đặc điểm Bộ lệnh phù hợp với PP LT có cấu trúc KDL phong phú, cho phép định nghĩa thêm kiểu dữ liệu mới Linh động về cú pháp, ít từ khóa Ngôn ngữ mạnh và mềm dẻo , được dùng để viết OS, chương trình điều khiển, soạn thảo văn bản, đồ hoạ, bảng tính và các chương trình dịch cho các ngôn ngữ lập trình khác 4 Khuyết điểm Cú pháp thuộc loại lạ và khó học. Nếu người lập trình đã học qua một ngôn ngữ khác thì sẽ dễ dàng tiếp cận Một số ký hiệu có nhiều nghĩa khác nhau ( dấu “*” là toán tử nhân, là khai báo con trỏ, ), việc sử dụng đúng nghĩa các toán tử phụ thuộc vào ngữ cảnh sử dụng Việc truy nhập tự do vào dữ liệu, việc trộn lẫn các kiểu dữ liệu làm cho chương trình có phần bất ổn 5 Các bước thực thi chương trình C Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” /*My first C programming It was written on October 21, 2010*/ #include #include int main () { //Lenh printf de xuat ra man hinh printf ( "Hello world\n" ); getch (); return 0; } Bước 1. Khởi động Bước 2. Tạo mới Project Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 3. Chọn ngôn ngữ C++, Win32 Console Application Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” 1. Đặt tên Project 3. Đặt tên Solution 2. Chọn vị trí lưu Bước 5. Chọn Application Settings Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 6. Chọn Emply project nhấn Finish Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 7. Chọn Solution Explorer Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 9. Click phải vào thư mục Source Files trong cửa sổ Solution Explorer Chọn Add New Item Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 9. Click phải vào thư mục Source Files trong cửa sổ Solution Explorer Chọn Add New Item Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 10. Nhấn vào nút Add Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 11. Soạn thảo code trong file Source.cpp Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 12. Kiểm tra lỗi cú pháp (hoặc Shift + F6 ) Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 13. Nếu có lỗi sẽ xuất hiện cửa sổ bên dưới Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 14. Sửa lỗi bằng cách bổ sung thêm dòng sau vào bên dưới từ khoá #include #pragma warning(disable:4996) Bước 15. Thực thi chương trình: nhấn F5 Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Bước 15. Thực thi chương trình: nhấn F5 Ví dụ viết chương trình xuất ra màn hình dòng chữ “Hello World” Cấu trúc cơ bản của chương trình C Chỉ thị tiền xử lý (Preprocessor directive) Chú thích (Comment) Chú thích (Comment) Lệnh (Statement) Cấu trúc cơ bản của một chương trình C Mô tả chương trình: mục đích, tên tác giả, ngày viết, các thông tin khác (Không bắt buộc) Chỉ thị tiền xử lý Hàm main() Phân tích chương trình ví dụ 23 #include thể hiện đoạn chương trình kết hợp với file stdio.h (Standard Input/Output header file). Tập tin này cho phép code sử dụng các lệnh có sẵn trong C để đọc dữ liệu từ bàn phím và xuất kết quả ra màn hình ( printf ) Chỉ thị tiền xử lý Chỉ thị tiền xử lý ( Preprocessor directive ) Các c hỉ thị tiền xử lý là những dòng được đưa vào trong mã của chương trình phía sau dấu # Những dòng này không phải là lệnh của chương trình nhưng chỉ thị cho tiền xử lý Tiền xử lý kiểm tra mã lệnh trước khi biên dịch thực sự và thực hiện tất cả các chỉ thị trước khi thực thi mã lệnh của các câu lệnh thông thường 24 Chỉ thị tiền xử lý ( Preprocessor directive ) Đặc điểm: Mô tả trên một dòng, không có dấu ; Trường hợp cần mô tả trên nhiều dòng dùng dấu \ ở cuối mỗi dòng 25 Chỉ thị tiền xử lý ( Preprocessor directive ) Các dạng: Định nghĩa macro ( macro definitions ): #define - #undef Kết hợp với điều kiện (conditional inclusions): #ifdef, #ifndef, #if, #endif, #else và #elif Điều khiển dòng lệnh ( line control ): #line Chỉ thị lỗi ( error directive ): #error Kết hợp file nguồn ( source file inclusion ): #include Chỉ thị pragma ( pragma directive ): #pragma 26 Chỉ thị tiền xử lý ( Preprocessor directive )1. Macro definitions: #define #define “định danh” “thay thế” Mục đích: T hay thế bất kỳ sự xuất hiện của “ định danh ” trong phần còn lại của các mã lệnh bằng “ thay thế ” . “ Thay thế ” : có thể là một biểu thức hoặc một lệnh Chỉ thị tiền xử lý ( Preprocessor directive )1. Macro definitions – Ví dụ #define MAX_SIZE 100 int table1[ MAX_SIZE ]; int table2[ MAX_SIZE ]; int table1[ 100 ]; int table2[ 100 ]; Định nghĩa thay thế một hàm có tham số #include #define getmax(a, b) ((a)>(b)?(a):(b)) Chỉ thị tiền xử lý ( Preprocessor directive )1. Macro definitions – Ví dụ int main() { int x = 5, y; y = getmax(x,2); printf(y); return 0; } Chỉ thị tiền xử lý ( Preprocessor directive )1. Macro definitions: #define # un def “định danh” # “tham số thay thế” Mục đích: “tham số thay thế” là một chuỗi ký tự (không cần đặt trong dấu ngoặc kép “”) #define str(x) # x printf(tr(test)); printf(“test”); Chỉ thị tiền xử lý ( Preprocessor directive )1. Macro definitions: #define # un def “định danh” “đối số 1” # “đối số 2” Mục đích: Nối đối số “đối số 1” với “đối số 2” #define glue(a, b) a ## b glue(print, f)("test”); printf(“test”); Chỉ thị tiền xử lý ( Preprocessor directive )1. Macro definitions: #undef # un def “định danh” Mục đích: Bỏ định nghĩa cho “định danh” #define MAX_SIZE 100 int table1[MAX_SIZE]; #undef MAX_SIZE #define MAX_SIZE 200 int table2[MAX_SIZE]; int table1[ 100 ]; int table2[ 200 ]; Chỉ thị tiền xử lý ( Preprocessor directive )2. Kết hợp với điều kiện (conditional inclusions): #ifdef # if def “định danh” lệnh; Mục đích: Cho phép chương trình biên dịch nếu “định danh” được định nghĩa Ví dụ: #ifdef MAX_SIZE int table[MAX_SIZE]; #endif Chỉ thị tiền xử lý ( Preprocessor directive )2. Kết hợp với điều kiện (conditional inclusions): #ifdef #endif # if def “định danh” lệnh; #endif Mục đích: Cho phép chương trình biên dịch nếu “định danh” được định nghĩa Ví dụ: #ifdef MAX_SIZE int table[MAX_SIZE]; #endif Chỉ thị tiền xử lý ( Preprocessor directive )2. Kết hợp với điều kiện (conditional inclusions): #ifndef #endif # ifn def “định danh” lệnh; #endif Mục đích: Cho phép chương trình biên dịch nếu “định danh” CHƯA được định nghĩa. Ví dụ: #ifndef MAX_SIZE #define MAX_SIZE 100 #endif int table[MAX_SIZE]; Chỉ thị tiền xử lý ( Preprocessor directive )2. Kết hợp với điều kiện (conditional inclusions): #if, #else, #elif #endif Mục đích: Chỉ thị #if , #else và #elif dùng để chỉ định một số điều kiện để thực hiện mã lệnh. Điều kiện là một biểu thức hằng số. # if “điều kiện” lệnh; #elif “điều kiện” lệnh; #else lệnh; #endif # if “điều kiện” lệnh; #else lệnh; #endif Chỉ thị tiền xử lý ( Preprocessor directive )2. Kết hợp với điều kiện (conditional inclusions): #if, #else, #elif #endif #if MAX_SIZE>200 #undef MAX_SIZE #define MAX_SIZE 200 #elif MAX_SIZE<50 #undef MAX_SIZE #define MAX_SIZE 50 #else #undef MAX_SIZE #define MAX_SIZE 100 #endif int table[MAX_SIZE]; Chỉ thị tiền xử lý ( Preprocessor directive )3. Điều khiển dòng lệnh ( line control ): #line #line number "filename" Mục đích: Chỉ thị #line cho phép kiểm soát dòng trong tập tin mã lệnh cũng như tên tập tin muốn hiển thị khi xảy ra lỗi “filename” có thể là một chuỗi ký tự bất kỳ cần hiển thị Chỉ thị tiền xử lý ( Preprocessor directive )4. Chỉ thị lỗi ( error directive ): #error Mục đích: Chỉ thị này sẽ ngừng quá trình biên dịch #ifndef __cplusplus #error A C++ compiler is required! #endif Chỉ thị tiền xử lý ( Preprocessor directive )5. Chỉ thị pragma ( pragma directive ): #pragma Mục đích: Chỉ thị này được sử dụng để xác định các lựa chọn khác nhau cho các trình biên dịch Các tùy chọn này được cụ thể cho các platform và trình biên dịch sử dụng Chỉ thị tiền xử lý ( Preprocessor directive )6. Kết hợp file nguồn ( source file inclusion ): #include Mục đích: Chỉ thị này sẽ thay thế toàn bộ nội dung của header ( thư viện có sẵn – dùng cặp dấu ) hay một tập tin “file” ( tự định nghĩa thêm – dùng cặp dấu nháy kép “ ” ) . Các tập tin này chứa định nghĩa các hàm được sử dụng trong chương trình #include hoặc #include "file" Một số tập tin thư viện thường dùng stdio.h: định nghĩa các hàm vào ra chuẩn như các hàm xuất 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ập một chuỗi ký tự từ bàm phím (gets()), xuất chuỗi ký tự ra màn hình (puts()) conio.h : định nghĩa các hàm vào ra trong chế độ DOS, như clrscr(), getch(), Một số tập tin thư viện thường dùng math.h: Định nghĩa các hàm toán học như: abs(), sqrt(), log(), log10(), sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(), alloc.h: đị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(), creatnew(), eof(), filelength(), lock(), Hàm int main() Hàm main() là bắt buộc và được thực hiện đầu tiên khi thực thi chương trình C Các lệnh trong hàm main() được đặt trong cặp dấu { } Chương trình sẽ thực hiện những lệnh theo thứ tự trong hàm main() Hàm int main() Lệnh Lệnh thực hiện một chức năng nào đó (khai báo, gán, xuất, nhập, ) và được kết thúc bằng dấu chấm phẩy (;) Khối lệnh Khối lệnh gồm nhiều lệnh và được đặt trong cặp dấu ngoặc { } Các lệnh trong hàm main() Lệnh printf ( "Hello world\n" ); dùng để xuất ra màn hình dòng chữ “Hello World” Lệnh getch (); dùng để chờ nhấn một phím bất kỳ trên bàn phím để tiếp tục thực hiện tiếp lệnh kế Lệnh return 0; dùng để kết thúc hàm main() – Kết thúc chương trình và trả về giá trị mã là 0 !!! Mỗi lệnh đều được kết thúc bằng dấu ; Chú thích (comment) Được lập trình viên ghi chú hay diễn giải trong chương trình Đây không phải là lệnh Chú thích một dòng: dùng // trước chú thích Chú thích cho nhiều dòng: dùng cặp dấu /* và */ để bao nội dung chú thích /*My first C programming It was written on October 21, 2010*/ //Lenh printf de xuat ra man hinh Mở Project có sẵn Mở Project có sẵn Tập các ký tự thường dùng trong C Chữ cái hoa: A, B, ..., Z Chữ cái thường: a, b, c, ..., z Chữ số: 0, 1, ..., 9 Các ký hiệu toán học: + - * / = ( ) % Ký hiệu gạch nối: _ C ác ký hiệu đặc biệt như: . , ; [] {} ? ! \ & | % # ... K hông được dùng các ký hiệu như: α , φ , Ω , π , hoặc tiếng việt có dấu: â, ă, ô 50 Từ khóa (keyword) auto double int struct break else long switch case enum register typedef char extern return union continue for signed void do if static while default goto sizeof volatile const float short unsigned Định danh (identifier Name) Dùng để đặt tên biến, tên hằng, tên hàm, Bắt đầu bằng một ký tự Các ký tự trong tên biến chỉ có thể là các ký tự chữ, số hoặc dấu gạch dưới (_) Không được trùng với các từ khoá Không được trùng với phạm vi khai báo Tên dễ hiểu, súc tích và gợi nhớ Phân biệt chữ HOA và thường 52 Các định danh nào sau đây là không hợp lệ? Tinh Tong Tinh-Tong Tinh_Tong x_Mu_2 2_Mu_2 Tien$ default yahoo.com Các kiểu dữ liệu (Data type) Kiểu cơ sở: tích hợp sẵn trong ngôn ngữ Ký tự Số nguyên Số thực Kiểu void Kiểu tự định nghĩa: dùng những kiểu cơ sở để xây dựng thành những kiểu dữ liệu mới cho phù hợp với bài toán Mảng, xâu ký tự, danh sách liên kết, cây, 54 Kiểu số nguyên (Integer type) Data type Size Value range char 1 byte -128 đến 127 hoặc 0 đến 255 (Ký tự dạng m ã ASCII ) unsigned char 1 byte 0 đến 255 signed char 1 byte -128 đến 127 int 2 hoặc 4 bytes -32,768 đến 32,767 hoặc -2,147,483,648 đến 2,147,483,647 unsigned int 2 hoặc 4 bytes 0 đến 65,535 hoặc 0 đến 4,294,967,295 short 2 bytes -32,768 đến 32,767 unsigned short 2 bytes 0 đến 65,535 long 4 bytes -2,147,483,648 đến 2,147,483,647 unsigned long 4 bytes 0 đến 4,294,967,295 Kiểu số thực (Floating-Point Type) 56 Type Size Value range Precision float 4 bytes 1.2E-38 to 3.4E+38 6 chữ số phần thập phân double 8 bytes 2.3E-308 to 1.7E+308 15 chữ số phần thập phân long double 10 bytes 3.4E-4932 to 1.1E+4932 19 chữ số phần thập phân Biến (Variable) Một biến đại diện cho một vùng nhớ hay tập các vùng nhớ trên bộ nhớ chính của máy tính Biến để lưu trữ các giá trị do người dùng nhập vào hoặc các giá trị tạm thời trong quá trình tính toán Mỗi biến sẽ có tên và kiểu dữ liệu tương ứng Phải khai báo biến trước khi sử dụng 57 Khai báo biến Cú pháp tên biến; Ví dụ: int a; //Khai báo biến để lưu số nguyên tên a float c; //Khai báo biến để lưu số thực tên c Khai báo nhiều biến cùng kiểu tên biến1, tên biến2, tên biến3; Ví dụ: int a, x, y; 58 Lấy kích thước của biến/ kiểu dữ liệu Kích thước của một số kiểu dữ liệu phụ thuộc vào hệ điều hành cụ thể của mỗi máy Để biết chính xác kích thước kiểu dữ liệu hay biến: sizeof(tên kiểu/ biến) Toán tử sizeof trả về kích thước theo đơn vị byte 59 Khai báo & gán giá trị ban đầu cho biến tên biến = giá trị hằng; Ví dụ: int a = 5; float b = 5.4f, c = 9.2f; char ch = ‘n’; 60 Các loại giá trị hằng (literal) Hằng số: Đó là các giá trị xác định, một hằng số có thể là nguyên (có kiểu dữ liệu int, hay long int) hay thực (có kiểu dữ liệu là float, double, long double). Hằng ký tự: Được đặt trong dấu nháy đơn. Ví dụ: 'A', 'a' tương ứng với giá trị nguyên 65, 97 trong bảng mã ASCII. Hằng chuỗi: Là tập hợp các ký tự được đặt trong cặp dấu nháy kép " ". Ví dụ: “ Lap trinh C " 61 Qui định viết giá trị hằng (literal) Kiểu Qui định suffix Ví dụ int 123 long Có ký tự l hoặc L ở cuối 123L unsigned int Có ký tự u hoặc U ở cuối 123U unsigned long Có ký tự ul hoặc UL ở cuối 123UL float Có ký tự f hoặc F ở cuối 123.45F double 123.45 long double Có ký tự l hoặc L ở cuối 123.45L Qui định viết giá trị hằng (literal) Một hằng số nguyên có thể thể hiện theo dạng số hệ thập phân (decimal), hệ bát phân (octal) hay hệ thập lục phân (hexadecimal) Tiền tố (prefix) là 0x hay 0X thể hiện cho hexadecimal và tiền tố 0 cho octal Ví dụ: 0x39F (hexadecimal), 056 (octal) Định nghĩa biến hằng (constant) K hông thay đổi giá trị trong khi thực thi chương trình Dùng toán tử #define Cú pháp: #define Ví dụ: #define MAX 100 Dùng từ khoá const const = ; Ví dụ: const int MAX = 100; Tên hằng số nên viết bằng chữ in HOA 64 Biểu thức (Expression) Biểu thức là một sự kết hợp giữa các toán tử (operator) và các toán hạng (operand) theo đúng một trật tự nhất định. Mỗi toán hạng có thể là một hằng, một biến hoặc một biểu thức khác. Trong trường hợp, biểu thức có nhiều toán tử, ta dùng cặp dấu ngoặc đơn ( ) để chỉ định toán tử nào được thực hiện trước. int n = -100; int x = 089, int a = 0x137E unsigned int i = -100; int = 2.9, b = 0x34G; long m = 2, p = 4; int 2k; float y = y * 2; char ch = “b”, m = ‘\n’; 66 Cho biết những lỗi sai và sửa lại cho đúng Chuyển đổi kiểu trong câu lệnh gán Giá trị của biểu thức bên phải dấu = được tự động chuyển thành kiểu dữ liệu của biến bên trái dấu = Ví dụ: int i=100; double d = 123.456; Nếu thực thi lệnh i = d ; thì i = 123 (chuyển đổi kiểu mất mát thông tin) Nếu thực thi lệnh d = i ; thì d = 100.0 (chuyển đổi kiểu không mất mát thông tin) Chuyển đổi từ KDL có miền giá trị nhỏ sang KDL có miền giá trị lớn hơn: char int long float double thì không mất thông tin Khi chuyển đổi từ KDL có miền giá trị lớn sang KDL có miền giá trị nhỏ hơn: double float long int char thì mất thông tin Chuyển đổi kiểu trong câu lệnh gán Chuy ể n ki ể u trong bi ể u th ứ c Khi các hằng và biến có kiểu khác nhau trong một biểu thức thì giá trị của chúng phải được chuyển thành cùng kiểu trước khi thực hiện các phép toán Trình biên dịch sẽ thực hiện việc chuyển kiểu (convert) tự động đến kiểu của toán hạng có kiểu lớn nhất. Việc chuyển kiểu này gọi là thăng cấp kiểu (type promotion) Chuy ể n ki ể u trong bi ể u th ứ c Ví dụ: char ch; int i; float f; double d; Ép kiểu (casting) Dùng để ép kiểu của một biểu thức thành một kiểu theo ý muốn của lập trình viên Cú pháp (kiểu dữ liệu) biểu thức Ví dụ: float kq = (float)5/2; Toán tử số học (arithmetic operator) Ký hiệu Ý nghĩa Ghi chú + Cộng - Trừ * Nhân / Chia Đối với 2 số nguyên thì kết quả là chia lấy phần nguyên % Chia lấy phần dư Chỉ áp dụng cho 2 số nguyên Toán tử gán phức hợp Ký hiệu Ví dụ Ý nghĩa += n += 25 n = n + 25 -= n -= 25 n = n – 25 *= n *= 25 n = n * 25 /= n /= 25 n = n / 25 %= n %= 25 n = n % 25 Toán tử so sánh Stt Ký hiệu Ý nghĩa 1 > Lớn hơn 2 < Nhỏ hơn 3 >= Lớn hơn hoặc bằng 4 <= Nhỏ hơn hoặc bằng 5 = = Bằng nhau 6 != Khác nhau Phép toán so sánh Các toán tử khác PHÉP TOÁN LOGIC 1 ! NOT 2 && AND 3 || OR TOÁN TỬ TĂNG GIẢM 1 ++ Tăng 1 Nếu toán tử tăng giảm đặt trước thì tăng giảm trước rồi tính biểu thức hoặc ngược lại. 2 -- Giảm 1 PHÉP TOÁN THAO TÁC TRÊN BIT 1 & AND 2 | OR 3 ^ XOR 4 << Dịch trái 5 >> Dịch phải 6 ~ Lấy phần bù theo bit 75 int a, b; b=a%2 + a/2 + --a; Với a = 17 Kết quả: a = ?; b = ? Với a = 3 Kết quả: a = ?; b = ? ---------------------------------------- int a, b; b=a/3 + a--; Với a = 8 Kết quả: a = ?; b = ? Với a =21 Kết quả: a = ?; b = ? Cho biết kết quả của đoạn chương trình sau: (ĐK)?: Ví dụ: int n; (n%2==0)? n ++ : n --; nếu n = 10 thì giá trị n = 11 nếu n = 21 thì giá trị n = 20 n = 10 (n%2==0): đúng thực hiện lệnh n++ = 10++ = 11 n = 21 (n%2==0): sai thực hiện lệnh n-- = 21-- = 20 Toán tử điều kiện Cho biết kết quả đoạn chương trình sau: int k; m = (k%3==0)?k++: k--; Với k =10 Kết quả: m = ? Với k =15 Kết quả: m = ? 78 Toán tử điều kiện Thứ tự ưu tiên toán tử Toán tử Độ ưu tiên Trình tự kết hợp () [] -> 1 Từ trái qua phải ! ~ ++ -- - + * & sizeof 2 Từ phải qua trái * / % 3 Từ trái qua phải + - 4 Từ trái qua phải > 5 Từ trái qua phải = > 6 Từ trái qua phải == != 7 Từ trái qua phải & 8 Từ trái qua phải | 9 Từ trái qua phải ^ 10 Từ trái qua phải && 11 Từ trái qua phải || 12 Từ trái qua phải ? : 13 Từ phải qua trái = += -= *= /= %= 14 Từ phải qua trái 79 Hàm xuất chuỗi/ giá trị ra màn hình Thư viện Xuất: printf(“hằng chuỗi”); Vd: printf(“Xin chao cac ban”); printf(“chuỗi định dạng”, đối số 1, đối số 2); Vd: int a=5; float b=2.7; printf(“Gia tri cua bien a=%d, b=%f“, a, b); 80 Có thể có nhiều đối số theo thứ tự của chuỗi định dạng tương ứng Hàm nhập giá trị cho biến từ bàn phím Thư viện Cú pháp scanf(“chuỗi định dạng”, & tên biến); Vd: int x; scanf(“%d”, & x); 81 Địa chỉ của biến ( & tên biến) Chuỗi định dạng Stt Tên kiểu Ý nghĩa Chuỗi định dạng Kiểu số thực 1 float %f 2 double %lf 3 long double %lf Kiểu số nguyên/ xâu ký tự 1 char Ký tự %c Số nguyên %d 2 unsigned char Số nguyên dương %d 3 int Số nguyên %d 4 unsigned int Số nguyên dương %u 5 long Số nguyên %ld 6 unsigned long Số nguyên dương %lu 7 char * Chuỗi %s 82 Xuất những ký tự đặc biệt Ký tự Ý nghĩa Ví dụ \’ Xuất dấu nháy đơn printf(“ \’ ”); Kết quả: ‘ \” Xuất dấu nháy đôi printf( “ \” ”); Kết quả: “ \\ Xuất dấu chéo ngược “\” printf(“ \\ ”); Kết quả: \ \0 Ký tự Null Dùng để gán ký tự kết thúc của chuỗi \a Alert : Tiếng bip 83 Xuất ký tự điều khiển Ký tự Ý nghĩa Ví dụ \t Tab vào một đoạn ký tự trắng printf(("xyz\tzyx”); Kết quả: xyz zyx \b Xuất lùi về sau printf("xyz\t\bzyx”); Kết quả: xyzzyx \n hoặc endl Xuống dòng printf("xyz\nzyx”); Kết quả: xyz zyx \r Về đầu dòng printf("xyz\rzyx”); Kết quả: zyx 84 Ví dụ hàm nhập xuất – Cách 1 #include #include #pragma warning ( disable :4996) int main () { int a, b, tong; float thuong; printf ( "Nhap vao so nguyen a: " ); scanf ( "%d" , &a); printf ( "Nhap vao so nguyen b: " ); scanf ( "%d" , &b); tong = a + b; thuong = ( float )a / b; printf ( "Tong %d + %d = %d " , a, b, tong); printf ( "\nThuong %d : %d = %f " , a, b, thuong); getch (); return 0; } #include #include #pragma warning ( disable :4996) int main () { int a, b; printf ( "Nhap vao so nguyen a: " ); scanf ( "%d" , &a); printf ( "Nhap vao so nguyen b: " ); scanf ( "%d" , &b); printf ( "Tong %d + %d = %d " , a, b, a + b); printf ( "\nThuong %d : %d = %f " , a, b, ( float )a / b); getch (); return 0; } Ví dụ hàm nhập xuất – Cách 2 Kết quả của chương trình Cần hiển thị kết quả chia gồm 2 số phần lẻ Thay đổi tham số của printf() #include #include #pragma warning ( disable :4996) int main () { int a, b; printf ( "Nhap vao so nguyen a: " ); scanf ( "%d" , &a); printf ( "Nhap vao so nguyen b: " ); scanf ( "%d" , &b); printf ( "Tong %d + %d = %d \n" , a, b, a + b); printf ( "Thuong %d : %d = %.2f \n" , a, b, ( float )a / b); getch (); return 0; } Có thể áp dụng cho số nguyên #include #include #pragma warning ( disable :4996) int main () { printf ( "Thoi gian: %d : %d : %d \n" , 2, 5, 30); getch (); return 0; } #include #include #pragma warning ( disable :4996) int main () { printf ( "Thoi gian: %02d : %02d : %02d \n" , 2, 5, 30); getch (); return 0; } Viết chương trình in ra màn hình thông tin cá nhân theo mẫu sau: *------------------------* * Thong tin ca nhan * *------------------------* Ho ten: Lop: Thong tin lien lac: - Dia chi: - So dien thoai: 91 Bài tập 1 Cách trình bày chương trình Mỗi lệnh nằm trên một dòng. Cuối dòng lệnh PHẢI có dấu chấm phẩy (;) Lệnh quá dài có thể được viết thành nhiều dòng sao cho mỗi lệnh phải được quan sát trọn vẹn trong pham vi cửa sổ lệnh 92 Cách trình bày chương trình (tt) Không nên đặt nhiều lệnh trên cùng một dòng, ngay cả các khai báo biến, nếu các biến có khác kiểu cũng nên đặt trên các dòng khác nhau. Có các chú thích, ghi chú đầy đủ Chương trình phân cấp các khối lệnh con theo từng cột Nhập vào giờ phút và giây, đổi ra giây và xuất kết quả ra màn hình Nhập vào 3 số nguyên a, b và c, tính giá trị trung bình cộng của 3 số trên và xuất kết quả ra màn hình Nhập vào 1 số nguyên dương n gồm 3 chữ số, hãy in ra chữ số ở hàng trăm, hàng chục và hàng đơn vị Nhập vào 2 số thực x và y, in ra màn hình số lớn nhất ( nếu x = y thì xuất giá trị x ) Bài tập 2 – Viết các chương trình sau Làm tròn một số thực x được nhập từ bàn phím thành số nguyên Nhập vào một số đo nhiệt độ (độ Fahrenheit) và xuất ra nhiệt độ tương đương (độ Celsius) theo công thức: Nhập vào 3 số nguyên a, b và c, cho biết 3 số vừa nhập có thứ tự tăng dần (a<b<c) không? Và xuất kết quả Bài tập 2 (tt) Các lỗi thường gặp khi viết chương trình Sử dụng lệnh nhưng KHÔNG khai báo thư viện hàm KHÔNG khai báo các biến sử dụng trong chương trình Lưu một giá trị vào một biến nhưng KHÔNG cùng kiểu dữ liệu với biến Sử dụng biến trong một biểu thức khi CHƯA có giá trị Các lỗi thường gặp khi viết chương trình Dùng phép chia nhưng KHÔNG ép kiểu cho số nguyên Ví dụ: double kq = 3.2 + 2/3 + 1.5; thì kq sẽ bằng 4.7 thay vì double kq = 3.2 + (double) 2/3 + 1.5; thì kq sẽ bằng 5.36666666666667 97 Bài tập về nhà Viết chương trình in kích thước và miền giá trị [ minmax ] của tất cả kiểu dữ liệu cơ bản, riêng kiểu số thực in thêm thông tin về độ chính xác Hướng dẫn: Toán tử sizeof(), và #include #include #include #include #pragma warning ( disable :4996) int main () { printf ( "* int: size = %d byte(s); value range = [ %d ... %d ]" , sizeof ( int ), INT_MIN , INT_MAX ); //Tuong tu cho nhung kieu khac getch (); return 0; } Q&A
File đính kèm:
- bai_giang_lap_trinh_c_chuong_2_gioi_thieu_ngon_ngu_c_tran_mi.pptx