Company LOGO 1 Các nội dung: Danh hiệu Các kiểu dữ liệu chuẩn của C Hằng (constant) Biến (variable) Biểu thức Các phép toán của C Cấu trúc tổng quát của một chương trình C Bài tập cuối chương © TS. Nguyễn Phúc Khải 2 DANH HIỆU Danh hiệu là tên của hằng, biến, hàm. hoặc các ký hiệu đã được quy định đặc trưng cho một thao tác nào đó. Danh hiệu có hai loại: ký hiệu và danh hiệu.
Nguyễn Phúc Khải 3 DANH HIỆU Ký hiệu (symbol) là các dấu đã được C quy định để biểu diễn cho một thao tác nào đó. Nếu dùng một dấu để biểu diễn cho một thao tác thì ta có ký hiệu đơn (single symbol). Ví dụ: +, -, *, /, %, =, >, < Nếu dùng hai dấu trở lên biểu diễn cho một thao tác thì ta có ký hiệu kép (compound symbol). Nguyễn Phúc Khải 4 DANH HIỆU Danh hiệu (Identifier) là các từ khóa của ngôn ngữ hoặc tên của các hằng, biến, hàm trong C.
Danh hiệu bao hàm từ khóa và danh hiệu. Từ khóa (keyword) là các danh hiệu mà C đã định nghĩa sẵn cho lập trình viên sử dụng để thiết kế chương trình, tập các từ khóa của C sẽ được liệt kê trong phần phụ lục. Ví dụ: if, for, while. Nguyễn Phúc Khải 5 DANH HIỆU Danh hiệu là tên của các hằng, biến, hàm.
Nếu các hằng, biến, hàm. này do C đã khai báo và thiết kế sẵn thì các danh hiệu có được gọi là các danh hiệu chuẩn. Ví dụ: main, scanf, printf. Nếu các hằng, biến, hàm.
này do lập trình viên khai báo và định nghĩa trong quá trình thiết kế chương trình thì các danh hiệu đó được gọi là các danh hiệu không chuẩn. Ví dụ: a, b, delta © TS. Nguyễn Phúc Khải 6 DANH HIỆU Chú ý rằng C là một ngôn ngữ nhạy cảm với sự phân biệt giữa ký tự hoa và ký tự thường, do đó khi viết While sẽ hoàn toàn phân biệt với while. Các từ khóa của C đều ở dạng chữ thường.
Nguyễn Phúc Khải 7 DANH HIỆU Nguyên tắc đặt tên của danh hiệu không chuẩn cũng cần phải được nêu cụ thể: Danh hiệu không chuẩn không trùng với từ khóa Danh hiệu không chuẩn không trùng với danh hiệu chuẩn © TS. Nguyễn Phúc Khải 8 DANH HIỆU Sơ đồ cú pháp cho danh hiệu không chuẩn © TS. Nguyễn Phúc Khải 9 DANH HIỆU Ví dụ: Main ? -batdau ? _batdau ? 2thang9 ? ket thuc ? © TS. Nguyễn Phúc Khải 10 DANH HIỆU Mỗi bộ dịch C sẽ có quy định về chiều dài danh hiệu khác nhau: Bộ dịch C/C++ thì danh hiệu có thể dài tùy ý Tuy nhiên trong các bộ dịch Borland C/C++ có quy định một giá trị xác định số ký tự đầu có nghĩa để phân biệt sự giống nhau và khác nhau giữa hai danh hiệu.0, giá trị này là 31 Trong Borland C++ 5.02, giá trị này là 55.
Nguyễn Phúc Khải 11 DANH HIỆU Ví dụ: ket_thuc_vong_lap_in_ra_ky_tu_khoang_trang ket_thuc_vong_lap_in_ra_k © TS. Nguyễn Phúc Khải 12 CÁC KIỂU DỮ LIỆU CỦA C Bốn kiểu dữ liệu chuẩn: char, int, float và double, mỗi kiểu sẽ có yêu cầu về bộ nhớ và tầm trị như sau: KIỂU KÍCH THƯỚC TẦM TRỊ BIỂU DIỄN char 8 bit -128. Nguyễn Phúc Khải 13 CÁC KIỂU DỮ LIỆU CỦA C Kiểu char char là kiểu nguyên một byte, kiểu này có thể được sử dụng để khai báo biến và có thể giữ một ký tự hoặc một giá trị 8 bit. Mỗi bộ dịch C sẽ có quy định khác nhau về tầm trị của kiểu char, đối với bộ dịch TURBO C VERSION 2.0 kiểu char là kiểu có dấu.
Nguyễn Phúc Khải 14 CÁC KIỂU DỮ LIỆU CỦA C Ví dụ: Biến kiểu char lưu trị hằng ký tự #include <stdio. Nguyễn Phúc Khải 15 CÁC KIỂU DỮ LIỆU CỦA C Kiểu int là một kiểu số nguyên, biến đó có kích thước trong bộ nhớ là kích thước của số nguyên mà máy quy định Đối với bộ dịch Borland C/C++ thì chiều dài của kiểu int là 16 bit có dấu, tầm trị biểu diễn từ –32768 đến 32767 (tức từ –215 đến 215 – 1). Nguyễn Phúc Khải 16 CÁC KIỂU DỮ LIỆU CỦA C Ví dụ : #include <stdio. Nguyễn Phúc Khải 17 CÁC KIỂU DỮ LIỆU CỦA C Kiểu float và double float là kiểu số thực dấu chấm động, có độ chính xác đơn (7 ký số sau dấu chấm thập phân), double là kiểu số thực, dấu chấm động, có độ chính xác kép (15 ký số sau dấu chấm thập phân).
double còn có thể được khai báo là long float, do đó khi khai báo double b; thì cũng hoàn toàn tương đương với long float b; © TS. Nguyễn Phúc Khải 18 CÁC KIỂU DỮ LIỆU CỦA C Kiểu float và double Để xuất nhập cho hằng, biến, biểu thức float chuỗi định dạng được sử dụng là "%f" đối với kiểu double thì chuỗi định dạng là "%lf" cho các hàm printf và scanf. Nguyễn Phúc Khải 19 CÁC KIỂU DỮ LIỆU CỦA C Ví dụ: #include <stdio.h> main() { double x, y, luy_thua; clrscr(); printf ("Moi nhap 2 so:"); scanf ("%lf %lf“, &x, &y); if (x < 0 && (y - (int)y != 0)) printf ("Ban da nhap sai tri"); else { luy_thua = pow (x, y); printf ("Luy thua cua %5.2lf", x, y, luy_thua); } } © TS. Nguyễn Phúc Khải 20 CÁC KIỂU DỮ LIỆU CỦA C Ngoài ra, ANSI (American National Standards Institute) còn đưa thêm một kiểu dữ liệu nữa là void.
Đây là kiểu không trị, chỉ dùng để biểu diễn kết quả trả về của hàm và khai báo pointer không trỏ đến một kiểu dữ liệu xác định nào cả. Kiểu này sẽ được nói chi tiết hơn ở các phần sau. Nguyễn Phúc Khải 21 CÁC KIỂU DỮ LIỆU CỦA C Để bổ sung cho bốn kiểu dữ liệu cơ bản C còn đưa ra các dạng bổ sung signed, unsigned, short, long : signed xác định kiểu có dấu. unsigned xác định kiểu không dấu.
short xác định kiểu ngắn của kiểu cơ bản. long xác định kiểu dài của kiểu cơ bản. Nguyễn Phúc Khải 22 CÁC KIỂU DỮ LIỆU CỦA C © TS. Nguyễn Phúc Khải 23 CÁC KIỂU DỮ LIỆU CỦA C Chú ý rằng trong bộ nhớ máy tính, các giá trị đều được lưu trữ dưới dạng mã nhị phân có nhiều bit (8, 16 hoặc 32 bit), trong đó số thứ tự của các bit được đánh số từ phải sang trái bắt đầu từ 0, số hiệu này được gọi là vị trí của bit.
Mỗi bit như vậy có một trọng số là 2 mũ n, với n là vị trí của bit đó. Nguyễn Phúc Khải 24 CÁC KIỂU DỮ LIỆU CỦA C Do đó, một số mà nhị phân là 10011110 sẽ được biểu diễn như sau: © TS. Nguyễn Phúc Khải 25 CÁC KIỂU DỮ LIỆU CỦA C Ví dụ: Một giá trị kiểu integer 0000001010001010b 1000001010001010b Một giá trị kiểu unsigned 1000001010001010b © TS. Nguyễn Phúc Khải 26 CÁC KIỂU DỮ LIỆU CỦA C Khi cần khai báo một biến n có kiểu là unsigned int ta chỉ cần viết: unsigned int n; hoặc gọn hơn unsigned n; hoặc chỉ cần viết: long p; là đủ để khai báo cho biến p có kiểu là signed long int.
Nguyễn Phúc Khải 27 CÁC KIỂU DỮ LIỆU CỦA C © TS. Nguyễn Phúc Khải 28 HẰNG (CONSTANT) Hằng là những giá trị cố định có trị hoàn toàn xác định và không thể thay đổi được chúng trong quá trình thực thi chương trình. Trong C, mỗi hằng đều có một kiểu dữ liệu riêng mà căn cứ vào kiểu dữ liệu ta có các loại hằng sau: Hằng số Hằng ký tự Chuỗi ký tự Biểu thức hằng © TS. Nguyễn Phúc Khải 29 HẰNG (CONSTANT) Hằng số Hằng số là các trị số đã xác định, một hằng số có thể là số nguyên hoặc số thực.
Hằng số nguyên Trong ngôn ngữ C, hằng số nguyên có thể thuộc một trong hai kiểu là integer hoặc long. Ứng với mỗi kiểu, hằng số có thể được biểu diễn ở dạng thập phân, bát phân hay thập lục phân(0x6). Nguyễn Phúc Khải 30 HẰNG (CONSTANT) Hằng số nguyên Hằng số nguyên được viết một cách bình thường và thường chiếm một từ (word) trong bộ nhớ, do đó nó có giá trị đi từ –32768 đến 32767, có nghĩa là MSB của dạng lưu trữ nhị phân của một số nguyên luôn là bit dấu. Các hằng số nguyên: 10 –4 –23456 Ta cần lưu ý khi sử dụng hằng số nguyên vượt quá tầm quy định.
Nguyễn Phúc Khải 31 HẰNG (CONSTANT) Ví dụ: Xét chương trình sau: #include <stdio.h> main() { printf ("%d %d %d", 32767, 32767 + 1, 32767 + 2); } Kết quả xuất màn hình: 32767 -32768 –32767 © TS. Nguyễn Phúc Khải 32 HẰNG (CONSTANT) Hằng số nguyên Hằng số nguyên dạng long lại được lưu trữ trong bộ nhớ với chiều dài 32 bit, có nghĩa là nó có thể có trị nằm trong khoảng - 2147483648 đến +2147483647, và khi viết các hằng số nguyên dạng này ta cần phải thêm l hay L ngay sau số cần làm việc. Hằng số nguyên có thể ở dạng unsigned, khi đó ta sẽ thêm u hoặc U vào ngay sau số đang làm việc (số đó có thể đang ở kiểu integer hoặc long). Nguyễn Phúc Khải 33 HẰNG (CONSTANT) Ví dụ: Các hằng số sau đây ở dạng unsigned 123U 234u 24UL © TS.
Nguyễn Phúc Khải 34 HẰNG (CONSTANT) Hằng số thực Trong ngôn ngữ C, số thực có thể ở dạng dấu chấm tĩnh hoặc dấu chấm động. Ví dụ: các số thực sau ở dạng dấu chấm tĩnh 1. Nguyễn Phúc Khải 35 HẰNG (CONSTANT) Hằng số thực Một hằng thực ở dạng số dấu chấm động có thể có các thành phần sau: phần nguyên: phần này là tùy yêu cầu. dấu chấm thập phân: bắt buộc phải có.
phần lẻ: tùy yêu cầu. các ký tự "e" hoặc "E" và một số mũ. Số mũ bản thân nó có thể âm. Nguyễn Phúc Khải 36 HẰNG (CONSTANT) Hằng thực dấu chấm động Hằng thực tương đương 2.
Nguyễn Phúc Khải 37 HẰNG (CONSTANT) Cần lưu ý: Các hằng số được viết không có dấu thập phân và số mũ, sẽ được hiểu là nguyên và được lưu trữ theo kiểu int, ngược lại sẽ được lưu trữ theo kiểu double. Các hằng số nguyên lớn hơn khả năng một int được tự động lưu trữ theo kiểu long. Các hằng số nguyên lớn hơn một long được lưu trữ theo kiểu double.