CÁC KIỂU DỮ LIỆU CƠ SỞ:Kiểu ký tự: char là kiểu dữ liệu dùng để biểu diễn ký tự thông qua bảng mã ASCII.. CÁC KIỂU DỮ LIỆU CƠ SỞ:Kiểu số nguyên: là kiểu dữ liệu dùng để biểu diễn các con
Trang 1TIN HỌC ĐẠI CƯƠNG
Lý thuyết: 6 buổi Thực hành: 8 buổi
Ngôn ngữ lập trình: C
Trang 2NỘI DUNG CÁC BUỔI HỌC
1. Tổng quan về C (chương 1,2)
2. Các cấu trúc điều khiển trong C (chương 3)
3. Hàm và cấu trúc chương trình (chương 4)
4. Mảng, chuỗi và con trỏ (chương 5)
5. Kiểu cấu trúc, đệ qui, tập tin (chương 6,7,8)
6. Ôn tập
Trang 3CHƯƠNG 1: KHÁI NIỆM CƠ BẢN VỀ C
1. Lập trình là gì?
2. Cấu trúc cơ bản của một chương trình C
3. Các kiểu dữ liệu cơ sở
4. Hằng, biến
5. Nhập / xuất dữ liệu
6. Tìm hiểu một số chương trình mẫu
Trang 41 LẬP TRÌNH LÀ GÌ?
Là kỹ thuật cài đặt một hoặc nhiều thuật toán
(giải thuật) có liên quan với nhau bằng một hoặc nhiều ngôn ngữ lập trình để tạo ra một chương trình máy tính
Có 2 loại lập trình:
1. Lập trình thủ tục.
2. Lập trình hướng đối tượng.
Trang 5MÁY TÍNH
Ngôn ngữ lập trình? Dùng ngôn ngữ lập trình nào?
Trang 61 LẬP TRÌNH LÀ GÌ?
Ngôn ngữ lập trình: là một hệ thống được ký hiệu hóa theo một dạng nào đó mà cả người và máy đều hiểu được.
Trang 82 CẤU TRÚC CƠ BẢN CỦA MỘT CHƯƠNG TRÌNH C:
< Khai báo thư viện >
void main() {
… }
void Giai_PT_Bac_I() {
… }
Trang 93 CÁC KIỂU DỮ LIỆU CƠ SỞ:
Trang 103 CÁC KIỂU DỮ LIỆU CƠ SỞ:
Kiểu ký tự: (char) là kiểu dữ liệu dùng để biểu
diễn ký tự thông qua bảng mã ASCII.
biểu diễn các kí tự (có 256 kí tự trong bảng mã này)
Chiếm 1 byte trong bộ nhớ
Phân loại:
Kiểu ký tự Phạm vi
biểu diễn
Số ký tự
Kích thước
bộ nhớ char
(signed char)
-128 -> 127 256 1 byte
unsigned char 0 -> 256 256 1 byte
Trang 113 CÁC KIỂU DỮ LIỆU CƠ SỞ:
Kiểu số nguyên: là kiểu dữ liệu dùng để biểu
diễn các con số nguyên (không có phần thập phân)
Phân loại:
biểu diễn
Kích thước bộ nhớ
long (int) -2 tỷ -> +2 tỷ 4 byte
unsigned long
(int)
Trang 123 CÁC KIỂU DỮ LIỆU CƠ SỞ:
Kiểu dấu phẩy động: là kiểu dữ liệu dùng để biểu
diễn các con số dạng số thực (có phần thập phân)
Kích thước
bộ nhớ float -3.4E-38 -> 3.4E+38 7-8 4 byte
double -1.7E-308 -> 1.7E+308 15-16 8 byte
long
double
3.4E-4932 -> 3.4E+4932 17-18 10 byte
Trang 134 HẰNG – BIẾN :
Hằng: là một giá trị bất biến trong suốt quá trình thực thi chương trình Hằng tương ứng với các kiểu dữ liệu nhất định.
Phân loại:
• Hằng số
• Hằng ký tự
• Hằng chuỗi
Trang 144 HẰNG – BIẾN :
Hằng số: là một giá trị số đã xác định (có thể là số nguyên hay số thực).
Cách định nghĩa một hằng trong chương trình:
Trang 154 HẰNG – BIẾN :
Hằng ký tự: là một giá trị ký tự đã xác định được viết trong cặp dấu ngoặc đơn (‘’) (giá trị này tương ứng với một giá trị trong bảng mã ASCII).
Cách định nghĩa một hằng trong chương trình:
#include <stdio.h>
#include <conio.h>
#define MY_LETTER ‘A’
const int my_letter=‘a’;
Trang 164 HẰNG – BIẾN :
Hằng chuỗi: là một giá trị chuỗi ký tự đã xác định được viết trong cặp dấu ngoặc kép(“…”) Một hằng chuỗi được lưu trữ tận cùng bằng ký tự null (\0).
Ví dụ: hằng chuỗi “Turbo C” sẽ được lưu như sau:
Cách định nghĩa một hằng trong chương trình:
Trang 195 NHẬP / XUẤT DỮ LIỆU:
Các hàm nhập / xuất trong thư viện chuẩn stdio.h:
Trang 205 NHẬP / XUẤT DỮ LIỆU CƠ BẢN:
Công dụng: dùng để xuất nội dung, thông tin cáchằng, biến ra màn hình
Cú pháp:
printf(“dòng điều khiển”,[các biểu thức]);
Trong đó: dòng điều khiển có thể là:
Nội dung thông báo: chuỗi, số, …
Các ký tự điều khiển: \n, \t, \r, … (xem trang 15)
Các mã đặc tả để in các biểu thức tương ứng (mỗi
biểu thức khi in phải có một đặc tả) (xem trang 39)
printf
Trang 215 NHẬP / XUẤT DỮ LIỆU CƠ BẢN:
Trang 225 NHẬP / XUẤT DỮ LIỆU CƠ BẢN:
Ví dụ 1: xuất thông báo “Chào bạn, bạn khỏe không?”
printf(“Chao ban, ban khoe khong?”);
Ví dụ 2: xuất thông báo “Giá trị của PI là ….” với PI làmột hằng số có giá trị là 3.14
printf(“Gia tri cua PI la %f ”,PI);
Ví dụ 3: xuất thông báo “Dien tich HCN có dai=… vàrong=… la …” với dai,rong,DT là các biến số nguyên
printf(“Dien tich HCN có dai=%d và rong=%d la %d ”,
dai,rong,DT);
printf
Trang 235 NHẬP / XUẤT DỮ LIỆU CƠ BẢN:
Công dụng: dùng để nhập nội dung, thông tin cho cácbiến, mảng
Trang 245 NHẬP / XUẤT DỮ LIỆU CƠ BẢN:
Lưu ý: khi dùng lệnh scanf để nhập dữ liệu là chuỗitheo mã đặc tả là %s thì chuỗi nhập phải không có khoảng trắng (xem trang 44) Để nhập chuỗi có khoảng
trắng ta phải dùng theo cú pháp sau:
Trang 25 Hàm puts: xuất một chuỗi ra màn hình, hàm tự động
thêm ký tự \n vào cuối chuỗi khi xuất Nếu xuất thành công thì hàm trả về =\n , ngược lại =EOF (-1).(xem trang 48)
Cú pháp: int puts (char * Tên_biến);
gets/puts
Trang 265 NHẬP / XUẤT KÝ TỰ:
Ngôn ngữ C cung cấp cho ta 2 hàm để nhập / xuất một
ký tự:
Hàm getchar: nhận một ký tự từ bàn phím và trả về
mã ASCII của ký tự nhận được
Cú pháp: int getchar (void);
Hàm putchar: xuất một ký tự ra màn hình Nếu xuất
thành công thì hàm trả về mã ASCII của ký tự xuất , ngược lại =EOF (-1).(xem trang 47)
Cú pháp: int putchar (int Tên_biến);
getchar/putchar
Trang 27MỘT SỐ LƯU Ý VỚI CÁC HÀM NHẬP:
Các lệnh này chỉ nhận dữ liệu sau khi nhấn phím Enter.
Khi sử dụng các lệnh scanf, getchar để nhập các chuỗi,
ký tự liên tiếp thì cần lưu ý đến khả năng bị trôi lệnh của các lệnh theo sau nó do mã phím \n còn lại trong vùng nhớ chuẩn stdin (xem trang 46)
=> Khắc phục: khử ký tự \n còn trong stdin bằng lệnh fflush (stdin) sau lệnh scanf hoặc dùng ký tự đặc tả %*c
trong lệnh scanf
Ngoài ra, ta có thể sử dụng một số hàm nhập / xuất khác
trong thư viện conio.h cho chương trình (xem trang 49)
Xuất chuỗi có màu sắc: cprintf
Nhập ký tự không cần chờ nhấn phím Enter: getch,getche
scanf, gets, getchar
Trang 28CHƯƠNG 2: BIỂU THỨC, TOÁN TỬ TRONG C
1. Biểu thức là gì?
2. Các phép toán trong C
3. Phép gán
4. Phép toán tăng giảm một giá trị
++, 5. Chuyển đổi kiểu dữ liệu
6. Toán tử phẩy (“,”), toán tử điều kiện (?)
Trang 291 BIỂU THỨC LÀ GÌ?
Là sự kết hợp hợp lệ của những phép toán thực
hiện trên các biến, hằng hoặc các giá trị của hàm.
Ví dụ: trong chương trình ta khai báo các biến
số nguyên như: a,b,c và Tổng, ta có một số biểu
thức sau:
a+b-c
(a+b)*5
Tong=(a+b)*c
Trang 30== , !=
> , <
>= , <=
Phép toán logic
Bù : ~ Dịch trái : << Dịch phải : >>
%
Trang 31b+=a; // tương đương b=b+a; => KQ: b=9
c=b/=a; // tương đương c=b=b/a; => KQ: c=b=3
Trang 324 PHÉP TOÁN TĂNG, GIẢM: ++ ,
Có 2 loại dạng tăng / giảm:
Dạng 1: (Toán tử đứng trước) ++ Biến; ( Biến;)
int c,a=3;
++a; // tương đương a=a+1; => KQ: a=4
c=++a; // tương đương a=a+1, rồi gán c=a => KQ: c=a=5
Dạng 2 : (Toán tử đứng sau) Biến ++ ; (Biến ;)
int c,a=3;
a++; // tương đương a=a+1; => KQ: b=4
c=a++; // tương đương gán c=a, rồi thực hiện a=a+1 => KQ: c=4 và a=5
Trang 335 CHUYỂN ĐỔI KIỂU DỮ LIỆU
Kiểu dữ liệu thấp -> cao
TH3: f=a+b;
f=a/b;
f=a%b;
// c=7.0 // c=2.0 // c=1.0
???
Khác kiểu dữ liệu TH2: f=f1+a;
f=a/f1;
f=f1/a;
// c=12.5 // c=0.66667 // c=1.5
Kiểu dữ liệu cao -> thấp TH4: a=f1+f2;
a=f1/f2;
// c=12 // c=1 ???
Trang 345 CHUYỂN ĐỔI KIỂU DỮ LIỆU
Nhận xét 1:
TH1: không có vấn đề.
TH2: khi 2 toán hạng trong một phép toán khác kiểu dữ liệu thì kiểu dữ liệu thấp được nâng thành kiểu dữ liệu cao trước khi tính toán (intlongfloatdouble)
TH3: cần phải ép kiểu trong khi tính toán để có kết quả
chính xác theo cú pháp sau:
f=( <Kiểu_dữ_liệu> )a/b;
TH4: nếu kết quả tính toán của biểu thức bên phải phép
gán có kiểu dữ liệu cao hơn bên trái thì phép gán có khả năng mất dữ liệu khi gán cho biến bên trái
Trang 356 TOÁN TỬ PHẨY “,” , TOÁN TỬ ĐIỀU KIỆN “?”
a/ Toán tử phẩy “,”: (xem trang 33)
Là toán tử kết hợp giữa phép gán và các biểu thức cáchnhau bởi dấu phẩy “,” Kết quả của biểu thức bên phảinhất được gán cho biến bên trái
b/ Toán tử (biểu thức) điều kiện “?”: (xem trang 33)
Cú pháp:
<Biểu_thức_điều_kiện>?<Biểu_thức_1>:<Biểu_thức_2>Biểu_thức_1 thực hiện khi Biểu_thức_điều_kiện có kếtquả khác 0, ngược lại biểu_thức_2 thực hiện
Ví dụ: char c,t=‘D’;
c=(t>=‘A’) && (t<=‘Z’)?t:‘A’; // KQ: c=‘D’
Trang 36BÀI TẬP YÊU CẦU: