BÀI TẬP
1.Viết chương trình in ra màn hình như sau:
2. Viết chương trình thực hiện yêu cầu sau: đọc vào
từ bàn phím hai cạnh của một hình chữ nhật, tính
chu vi và diện tích của hình chữ nhật này.
3. Biết rằng 1 Dollar tương đương 21000 đồng VN.
Hãy viết chương trình cho nhập vào số dollar và
đổi sang đồng.
52 trang |
Chia sẻ: maiphuongtl | Lượt xem: 3558 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng Tin học đại cương - Ngôn ngữ lập trình C, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 4
NGÔN NGỮ LẬP TRÌNH C
Ngôn ngữ lập trình C
Hàm
Cấu trúc lặp
Cấu trúc rẽ nhánh
Các thành phần cơ bản của ngôn ngữ C
Tổng quan
Mảng
Tổng quan1
Các thành phần cơ bản của C2
Nội dung
Giới thiệu
Giới thiệu về ngôn ngữ C
Dennis Ritchie tại Bell Telephone năm
1972.
Tiền thân của ngôn ngữ B, KenThompson,
cũng tại Bell Telephone.
Là ngôn ngữ lập trình có cấu trúc và phân
biệt chữ Hoa - thường (case sensitive)
ANSI C.
Đặc điểm của C
Rất mạnh và linh động, có khả năng thể
hiện bất cứ ý tưởng nào.
Được sử dụng rộng rãi bởi các nhà lập
trình chuyên nghiệp.
Có tính khả chuyển, ít thay đổi trên các hệ
thống máy tính khác nhau.
Rõ ràng, cô đọng.
Lập trình đơn thể, tái sử dụng thông qua
hàm.
Giới thiệu…
Giới thiệu…
Môi trường lập trình
Borland C++ 3.1 for DOS.
Visual C++ 6.0, Win32 Console
Application.
Các thành phần cơ bản của ngôn ngữ C
Bộ chữ viết
Bộ chữ cái 26 ký tự Latinh: A, B, C, …, Z,
a, b, c, …, z
Bộ chữ số thập phân : 0, 1, 2, …, 9
Các ký hiệu toán học : + – * / = ( )
Các ký tự đặc biệt : . , : ; [ ] % \ # $ ‘
Ký tự gạch nối _ và khoảng trắng ‘ ’
Từ khóa (keyword)
Các từ dành riêng trong ngôn ngữ.
Không thể sử dụng từ khóa để đặt tên cho
biến, hàm, tên chương trình con.
Một số từ khóa thông dụng:
• const, enum, signed, struct, typedef,
unsigned…
• char, double, float, int, long, short, void
• case, default, else, if, switch.
• do, for, while.
• break, continue, goto, return.
Các thành phần cơ bản của ngôn ngữ C
Các kiểu dữ liệu sơ cấp
C có 2 kiểu sơ cấp như sau:
Kiểu số nguyên: giá trị của nó là các số
nguyên như 2912, -1706, …
Kiểu số thực: giá trị của nó là các số thực
như 3.1415, 29.12, -17.06, …
Các kiểu số nguyên
STT Kiểu dữ liệu
Độ lớn
(Byte)
Miền giá trị
1 unsigned char 1 byte
Từ 0 đến 255 (tương đương 256
ký tự trong bảng mã ASCII)
2 char 1 byte -128 127
3 enum 2 bytes -32,768 32,767
4 unsigned int 2 bytes 0 65,535
5 short int 2 bytes -32,768 32,767
6 int 2 bytes -32,768 32,767
Các kiểu dữ liệu sơ cấp
Kiểu ký tự
Tên kiểu: char
Miền giá trị: 256 ký tự trong bảng mã ASCII.
Chính là kiểu số nguyên do:
• Lưu tất cả dữ liệu ở dạng số.
• Không lưu trực tiếp ký tự mà lưu mã ASCII của ký tự đó.
Ví dụ:
Lưu số 65 tương đương với ký tự ‘A’…
Lưu số 97 tương đương với ký tự ‘a’.
Các kiểu số nguyên
Các kiểu số thực(floating-point)
Các kiểu số thực: dùng để lưu các số thực
hay các số có dấu chấm thập phân. Gồm 3
kiểu sau:
Ví dụ: 17.06 = 1.706*10 = 1.706*101
STT
Kiểu dữ
liệu
Độ lớn
(Byte)
(Trị tuyệt đối) Miền giá trị
1 float 4 bytes 3.4 * 10-38 3.4 * 1038
2 double 8 bytes 1.7 * 10-308 1.7 * 10308
3
long
double
10 bytes 3.4 *10-4932 1.1 *104932
Tên (danh biểu-Identifier)
Tên hay còn gọi là danh biểu (identifier) được dùng
để đặt cho chương trình, hằng, kiểu, biến, chương
trình con... Tên có hai loại là tên chuẩn và tên do
người lập trình đặt.
− Tên chuẩn là tên do C đặt sẵn như tên kiểu:
int, char, float,…; tên hàm: sin, cos...
− Tên do người lập trình tự đặt để dùng trong
chương trình của mình.
Tên, biến, hằng và biểu thức
Tên (danh biểu-Identifier)
Sử dụng bộ chữ cái, chữ số và dấu gạch dưới (_)
để đặt tên, phải tuân thủ quy tắc:
− Bắt đầu bằng một chữ cái hoặc dấu gạch dưới.
− Không có khoảng trống ở giữa tên.
− Không được trùng với từ khóa, không nên đặt
tên trùng với tên chuẩn
Tên, biến, hằng và biểu thức
Tên (danh biểu-Identifier)
Ví dụ:
Các tên hợp lệ: GiaiPhuongTrinh,
Bai_Tap1
Các tên không hợp lệ: 1A, Giai Phuong
Trinh
Phân biệt chữ hoa chữ thường, do đó các
tên sau đây khác nhau:
• A, a
• BaiTap, baitap, BAITAP, bAItaP, …
Tên, biến, hằng và biểu thức
Biến
Cú pháp
;
, ;
Ví dụ
int i;
int j, k;
float ketqua, delta;
Tên, biến, hằng và biểu thức
Biến
Biến cho phép cung cấp một tên có ý nghĩa đại
diện cho mỗi vị trí vùng nhớ. Tên biến giúp truy
cập vào vùng nhớ mà không cần dùng địa chỉ
của vùng nhớ đó.
Hằng là đại lượng có giá trị thuộc một kiểu dữ
liệu nhất định, giá trị của hằng không thể thay
đổi trong thời gian tồn tại của nó.
Tên, biến, hằng và biểu thức
Hằng
Cú pháp
#define
Hoặc:
const = ;
Ví dụ:
#define MAX 100
#define PI 3.14
const int MAX = 100;
const float PI = 3.14;
Biểu thức
Tạo thành từ các toán tử (Operator) và các
toán hạng (Operand).
Toán tử tác động lên các giá trị của toán hạng
và cho giá trị có kiểu nhất định.
Toán tử: +, –, *, /, %….
Toán hạng: hằng, biến, lời gọi hàm...
Ví dụ:
2 + 3, a / 5, (a + b) * 5, …
Tên, biến, hằng và biểu thức
Toán tử gán
− Thường được sử dụng trong lập trình.
− Gán giá trị cho biến.
Cú pháp:
• = ;
• = ;
• = ;
• Có thể thực hiện liên tiếp phép gán.
Các toán tử (phép toán)
Các toán tử (phép toán)
int a,b,c,d,e,thuong;
a=10;
b=a;
thuong=a/b;
a=b=c=d=e=156;
a+=5;
Toán tử gán
Ví dụ:
x += y x = x + y
x -= y x = x – y
x *= y x = x*y
x /= y x = x / y
x %= y x = x % y
Phép gán mở rộng
Toán tử số học
+, –, *, /, % (chia lấy phần dư).
Ví dụ:
a = 1 + 2; b = 1 – 2; c = 1 * 2; d = 1 / 2;
e = 1*1.0 / 2;
h = 5 % 2;
Chú ý:
− Phép toán (%) không dùng cho kiểu dữ liệu float
hay double.
− Thứ tự ưu tiên của các toán tử số học: *, /, % , + ,-.
Các toán tử (phép toán)
++ (tăng 1 đơn vị), -- (giảm 1 đơn vị).
Đặt trước toán hạng
• Ví dụ ++x hay --x: thực hiện tăng/giảm trước.
Đặt sau toán hạng
• Ví dụ x++ hay x--: thực hiện tăng/giảm sau.
Các toán tử (phép toán)
Toán tử tăng, giảm 1
x =b++;
x = b;
b=b+1;
x= ++b; b=b+1;
x=b;
ITTC_HUFI
Ví dụ Kết quả
x=10;
y=x++;
y=10,x=11
x=10;
y=++x;
y=11,x=11
a=4;b=2;
c=b+a-- ;
c=6,a=3
a=4;b=2;
c=--a+b ; c=5,a=3
Toán tử tăng, giảm 1
Các toán tử (phép toán)
Toán tử quan hệ
So sánh 2 biểu thức với nhau.
Cho ra kết quả 0 (hay false nếu sai) hoặc 1 (hay
true nếu đúng).
==, >, =, <, <=, !=
Các toán tử (phép toán)
Ví dụ:
5 > 2 có giá trị 1 (đúng).
5 <= 4 có giá trị 0 (sai).
‘a’!=’b’ có giá trị 1 (đúng).
Các toán tử (phép toán)
&& 0 1
0 0 0
1 0 1
Các phép toán logic
&& : phép AND logic
| | : phép OR logic
! : phép NOT logic
Ví dụ:
(1 > 2) && (3 > 4); có giá trị 0 (sai).
(1 4); có giá trị 1 (đúng).
!(1 > 2); có giá trị 1 (đúng).
|| 0 1
0 0 1
1 1 1
Các toán tử (phép toán)
ITTC_HUFI
Thứ tự Kiểu toán tử
1 Số học
2 Quan hệ
3 Lôgic
Khi một biểu thức có nhiều hơn một kiểu toán tử
thì thứ tự ưu tiên phải được thiết lập giữa các kiểu
toán tử với nhau. Sau đây là bảng thứ tự ưu tiên
giữa các kiểu toán tử khác nhau.
Ví dụ: Hãy cho biết kết quả của biểu thức sau:
5*6/3+410)
có giá trị 0 (sai).
Toán tử điều kiện
Đây là toán tử 3 ngôi (gồm có 3 toán hạng)
? :
• đúng thì giá trị là .
• sai thì giá trị là .
Ví dụ:
x = 10;
y = x > 9 ? 100 : 200 ;
Kết quả y được gán giá trị 100
Nếu x nhỏ hơn 9 thì y sẽ nhận giá trị là 200.
Các toán tử (phép toán)
Phép chuyển kiểu (ép kiểu)
Cú pháp:
Ví dụ:
int a=5, b =2;
float c,d;
c = (float) a /b;
d=3.2;
b = (int)d % 2;
Các toán tử (phép toán)
(kiểu_mới) (biểu_thức)
Câu lệnh
Khái niệm
Là một chỉ thị trực tiếp, hoàn chỉnh nhằm ra
lệnh cho máy tính thực hiện một số tác vụ
nhất định nào đó.
Trình biên dịch bỏ qua các khoảng trắng (hay
tab hoặc xuống dòng) chen giữa lệnh.
Ví dụ:
a=2912;
a = 2912;
a
=
2912;
Phân loại
Câu lệnh đơn: chỉ gồm một câu lệnh.
Câu lệnh phức (khối lệnh): gồm nhiều câu
lệnh đơn được bao bởi { và }.
Ví dụ:
a = 2912; // Câu lệnh đơn
{ // Câu lệnh phức/khối lệnh
a = 2912;
b = 1706;
}
Câu lệnh
Phần chú thích
Phần chú thích
Đặt giữa cặp dấu /* */ hoặc // (C++).
Ví dụ:
int a, b; //khai bao bien a,b kieu int
a = 1; //gan 1 cho a
b =3; //gan 3 cho b
/* thuat toan tim so lon nhat la
neu a lon hon b thi a lon nhat
nguoc lai b lon nhat */
if (a > b) printf("max: %d", a);
else printf("max: %d", b);
Nhập, xuất dữ liệu
Thư viện
#include (standard input/output).
Cú pháp
printf([, , , …]);
là cách trình bày thông tin
xuất và được đặt trong cặp nháy kép “ ”.
• Văn bản thường.
• Ký tự điều khiển.
• Đặc tả.
Xuất dữ liệu
Chuỗi định dạng
Văn bản thường
Được xuất y hệt như lúc gõ trong chuỗi định
dạng.
Ví dụ:
Xuất chuỗi Hello World
printf(“Hello ”); printf(“World”);
printf(“Hello World”);
Xuất chuỗi a + b
printf(“a + b”);
Chuỗi định dạng
Ký tự điều khiển
Gồm dấu \ và một ký tự như trong bảng sau:
Ví dụ
printf(“Hello\n”);
printf(“\t Ban”);
Ký tự điều khiển Ý nghĩa
\a
\b
\n
\t
\\
\?
\”
Tiếng chuông
Lùi lại một bước
Xuống dòng
Dấu tab
In dấu \
In dấu ?
In dấu “
Chuỗi định dạng
Đặc tả
Gồm dấu % và một ký tự.
Xác định kiểu của biến/giá trị muốn xuất.
Các đối số chính là các biến/giá trị muốn xuất,
được liệt kê theo thứ tự cách nhau dấu phẩy.
Đặc tả Ý nghĩa Kiểu dữ liệu
%c
%d,%ld
%f, %lf
%s
%u
Ký tự
Số nguyên có dấu
Số thực
Chuỗi ký tự
Số nguyên không
dấu
char
int, short, long
float, double
char[], char*
unsigned
int/short/long
Chuỗi định dạng
Ví dụ
int a = 10, b = 20;
printf(“%d”, a); Xuất ra 10
printf(“%d”, b); Xuất ra 20
printf(“%d %d”, a, b); Xuất ra 10 20
float x = 15.06;
printf(“%f”, x); Xuất ra 15.060000
printf(“%f”, 1.0/3); Xuất ra 0.333333
Định dạng xuất
Cú pháp
Định dạng xuất số nguyên: %nd.
Định dạng xuất số thực: %n.kd.
int a = 1706;
float x = 176.85;
printf(“%10d”, a);printf(“\n”);
printf(“%10.2f”, x);printf(“\n”);
printf(“%.2f”, x);printf(“\n”);
1 7 0 6
7 6 . 8 5
1 7 6 . 8 5
1
Chuỗi định dạng
Phối hợp các thành phần
int a = 1, b = 2;
Yêu cầu: Xuất +=
printf("%d", a); // Xuất giá trị của biến a
printf(" + "); // Xuất “ + ”
printf("%d", b); // Xuất giá trị của biến b
printf(" = "); // Xuất “ = ”
printf("%d", a + b);// Xuất giá trị của a + b
printf(“%d + %d = %d”, a, b, a+b);
Câu lệnh nhập
Thư viện
#include (standard input/output)
Cú pháp
scanf([, , , …]);
giống định dạng xuất
nhưng chỉ có các đặc tả.
Các đối số là tên các biến sẽ chứa giá trị
nhập và được đặt sau dấu &
Ví dụ: Cho a và b kiểu số nguyên
scanf(“%d”, &a); // Nhập giá trị cho biến a
scanf(“%d”, &b); // Nhập giá trị cho biến b
scanf(“%d%d”, &a, &b);
Các câu lệnh sau đây sai:
scanf(“%d”, a); // Thiếu dấu &
scanf(“%d”, &a, &b); // Thiếu %d cho biến b
scanf(“%f”, &a); // a là biến kiểu số nguyên
scanf(“%9d”, &a); // không được định dạng
scanf(“a = %d, b = %d”, &a, &b”);
Câu lệnh nhập
Cấu trúc chương trình C
Khối khai báo
Hàm main()
Các hàm con (nếu có)
Khối khai báo
Gồm khai báo về sử dụng thư viện, khai báo hằng số, khai
báo hàm con (các nguyên mẫu hàm), khai báo các biến toàn
cục và khai báo các kiểu dữ liệu tự định nghĩa.
Hàm chính (main())
Chứa các biến, các lệnh và các lời gọi hàm cần thiết trong
chương trình.
Ví dụ:
Cấu trúc chương trình C
#include "stdio.h"
#include "conio.h"
#define PI 3.1415
// Nguyên mẫu hàm (prototype)
float Dien_TichHT(float );
// Hàm chính
void main()
{
float r;
printf("\nNhap ban kinh duong tron r =");
scanf("%f",&r);
printf("Dien tich = %5.2f", Dien_TichHT(r));
}
// Định nghĩa hàm con
float Dien_TichHT(float r)
{
return r*r*PI;
}
Một số hàm hữu ích khác
Các hàm trong thư việc toán học
#include
• acos, asin, atan, cos, sin, …
• exp, log, log10
• sqrt
• abs
• pow(double x, double y)
CÂU TRẮC NGHIỆM
Câu 1. Trong các định danh sau, định danh nào là hợp lệ
a. 123go
b. chao_ban
c. while
d. Chu#vi
Câu 2. Trong các định danh sau, định danh nào không hợp lệ
a. diemtrungbinh
b. nhan2songuyen
c. vonglap
d. switch
Câu 3. Độ lớn của kiểu dữ liệu int là bao nhiêu bit
a. 1 bit
b. 8 bit
c. 16 bit
d. 32 bit
CÂU TRẮC NGHIỆM…
Câu 4. Để tính giá trị, chọn cách viết nào:
a. x:=-b/2a;
b. x=-b/2*a;
c.
d. x=-b\2\a;
Câu 5. Biểu thức: 25/3 + 5/2*3 có giá trị là:
a. 8.0;
b.15.5;
c. 14;
d. 15.0;
ITTC_HUFI
Câu 6. Cho phương trình: ax2 + bx + c = 0
Giả sử a#0 và Delta:= b*b- 4*a*c > 0. Một nghiệm của phương
trình là:
a.x= -b + sqrt(Delta) / (2*a);
b.x= (-b + sqrt (Delta) ) /2*a;
c.x= (-b + sqrt (Delta) ) / (2*a);
d.x= (-b - sqr(Delta) ) /2/a;
Câu 7. Biểu thức nào sau đây có giá trị đúng:
a. 100 > 76)&& ('B' < 'A');
b. !( (49.5 + 2 4 / 2));
c. (49.5 + 2 < 5) && (2 < 4 / 2);
d. 2*(3+5) < 18 / 4*4;
CÂU TRẮC NGHIỆM…
CÂU TRẮC NGHIỆM…
Câu 8. Khi chạy chương trình:
void main(){
int a, b, c, n;
n=546;
a=n/100;
b=(n%100) /10;
c=(n%100)%10;
printf(“%d”,a+b+c);
}
Kết quả in ra:
a. 546
b. 5
c. 15
d. 6
ITTC_HUFI
CÂU TRẮC NGHIỆM…
Câu 9. Cho biết định dạng (mã qui cách) của kiểu dữ liệu số thực
a. %d
b.%u
c. %f
d. %ld
Câu 10. Cho biết giá trị của x khi thực hiện đoạn chương trình sau:
int a=11, b=2;
float x=(float) a/b;
a. 5.0
b. 5.1
c. 5.5
d. 5.2
ITTC_HUFI
Câu 11. Để khai báo pi là hằng số có giá trị bằng 3.14 ta sử
dụng câu lệnh nào dưới đây
a. float pi=3.14;
b. float const pi=3,14;
c. const pi=3.14;;
d. const float pi=3.14;
Câu 12. Cho biết giá trị của biến x khi thực hiện đoạn chương
trình sau:
int x, a=1, b=2, c=1;
x=--a+b*3-2*c++;
a. 8
b. 4
c. 6
d. Tất cả đều sai
CÂU TRẮC NGHIỆM…
BÀI TẬP
1.Viết chương trình in ra màn hình như sau:
2. Viết chương trình thực hiện yêu cầu sau: đọc vào
từ bàn phím hai cạnh của một hình chữ nhật, tính
chu vi và diện tích của hình chữ nhật này.
3. Biết rằng 1 Dollar tương đương 21000 đồng VN.
Hãy viết chương trình cho nhập vào số dollar và
đổi sang đồng.
Company Logo
Các file đính kèm theo tài liệu này:
- thdc_tongquan_2864.pdf