Tải bản đầy đủ (.pdf) (8 trang)

Ngôn ngữ lập trình C/C++ - Tuần 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (239.26 KB, 8 trang )

1
1
NGÔN NGỮ LẬP TRÌNH
C/C++
NguyễnHải Châu
Khoa Công nghệ thông tin
Trường Đạihọc Công nghệ
(Bài giảng tuần2)
2
Nộidung
z Kiểudữ liệu
z Biểuthức
z Câu lệnh
3
Kiểudữ liệu đơngiản
4
Khái niệm
z Các ngôn ngữ lập trình (NNLT) đềucó
mộtsố kiểudữ liệucơ bản
z Các yếutố gắnvớikiểudữ liệu:
{ Tên kiểu
{ Số byte trong bộ nhớđểlưutrữ một đơnvị dữ
liệuthuộckiểunày
{ Miềngiátrị củakiểu
5
Mộtsố kiểudữ liệu đơngiản trong C++
±10
-307
. . ±10
+308
8 bytedouble


±10
-37
. . ±10
+38
4 bytefloat
Số thực
-2
31
2
31
-14 bytelong
- 32768 327672 byteshort
0 2
32
-14 byteunsigned int
-2
31
2
31
-14 byteint
Số nguyên
0 2551 byteunsigned char
-128 1271 bytechar
Kí tự
MiềngiátrịSố ô nhớTên kiểuLoạidữ liệu
6
Kiểukýtự
char c, d; // c, d được phép gán giá trị từ -128 đến127
unsigned char e, f; // e được phép gán giá trị từ 0 đến255
c = 65 ; d = 179; // d có giá trị ngoài miền cho phép

e = 179; f = 330; // f có giá trị ngoài miền cho phép
cout << c << int(c); // in ra chữ cái 'A' và giá trị số 65
cout << d << int(d); // in ra là kí tự '|' và giá trị số -77
cout << e << int(e); // in ra là kí tự '|' và giá trị số 179
cout << f << int(f); // in ra là kí tự 'J' và giá trị số 74
2
7
Ví dụ: Tính diện tích và chu vi hình tròn
#include <iostream.h>
#include <iomanip.h>
void main()
{
float r = 2; // r là tên biếndùngđể chứa bán kính
cout << "Diện tích = " << setiosflags(ios::showpoint);
cout << setprecision(3) << r * r * 3.1416;
getchar() ;
}
8
Hằng: Khai báo và sử dụng
9
Hằng là gì?
z Là các giá trị cốđịnh, được đặttêngọi
trong chương trình C/C++
z Giá trị củahằng không thay đổi trong khi
chương trình thựchiện
10
Hằng nguyên
z Cách viếthằng nguyên (hệ 10):
{ Kiểu short, int: 3, -7
{ Kiểu unsigned: 3, 12345

{ Kiểu long, long int: 3L, -7L, 12345L
z Hằng nguyên có thể viết ở hệ 16 hoặc8:
{ Hệ 16: 0xA1 (11 ở hệ 10)
{ Hệ 8: 013 (11 ở hệ 10)
11
Hằng thực
z Hằng thựccóthể viết theo 2 cách
z Dạng dấuphảytĩnh: 3.2, -7.1, 3.1416
z Dạng dấuphảy động:
{Tổng quát: men hoặc mEn, trong đó m là phần
định trị, n là phầnbậc(phầnmũ)
{Ví dụ: 3.2 → 3.2e1, 3.2E1; 0.32 → 3.2e-1,
3.2E-1
12
Hằng ký tự
z Có hai cách viếthằng ký tự:
{Vớicáckýtự có mặtchữ: ‘A’
{Các ký tự không có mặtchữ: Dùng chữ số hệ 8
hoặc 16 để biểudiễnmãcủakýtựđó: ‘\33’,
‘\x1B’
{Mộtsố hằng ký tựđặcbiệtcócáchviết riêng để
tiệnlợivàdễ nhớ
z Hằng ký tự không có khái niệmrỗng
3
13
Mộtsố hằng ký tựđặcbiệt
'\n': biểuthị kí tự xuống dòng (cũng tương đương với endl)
'\t' : kí tự tab
'\a': kí tự chuông (tức thay vì in kí tự, loa sẽ phát ra mộttiếng 'bíp')
'\r' : xuống dòng

'\f' : kéo trang
'\\' : dấu\
'\?': dấuchấmhỏi?
'\'' : dấu nháy đơn'
'\"' : dấu nháy kép "
'\kkk' : kí tự có mã là kkk trong hệ 8
'\xkk' : kí tự có mã là kk trong hệ 16
14
Hằng xâu ký tự
z Là dãy ký tự bấtkỳđặtgiữadấu nháy kép
z Ví dụ:
{“Dien tu Vien thong”
{“Cong nghe thong tin”
z Chú ý:
{‘A’ là mộthằng ký tự, khác với
{“A” là mộthằng xâu ký tự
{Xâu ký tự có thể rỗng: “”
15
Tạisaocầncóhằng trong
chương trình?
z Chương trình dễđọchơn vì các con số
được thay bởicáctêngọi có ý nghĩa, ví
dụ: 3.1415 được thay bởi Pi
z Chương trình dễ sửachữahơn
16
Cách khai báo hằng
#define <tên hằng> <giá trị hằng>
hoặc
const <tên hằng>=<giá trị hằng>;
Ví dụ:

#define sosinhvien 50
#define MAX 100
const sosinhvien = 50;
17
Biến: Khai báo và sử dụng
18
Khai báo biến
z Biếnlàcáctêngọi để lưugiátrị khi
chương trình thựchiện
z Biến khác hằng ở chỗ giá trị củanócóthể
thay đổitrongkhichương trình thựchiện
z Có hai cách khai báo biến:
{Khai báo không khởitạo
{Khai báo có khởitạo
4
19
Khai báo không khởitạo
<tên kiểu 1> <tên biến1>;
<tên kiểu 2> <tên biến2>;
<tên kiểu 3> <tên biến 3>, <tên biến4>;
Chú ý: Các biếncócùngkiểucóthể khai
báo theo cách 3
20
Ví dụ về khai báo biến không khởitạo
void main()
{
int i, j; // khai báo 2 biến i, j có kiểunguyên
float x ; // khai báo biếnthựcx
char c, d[100] ;// biếnkítự c, xâu d
// chứatối đa 100 kí tự

unsigned int u; // biến nguyên không dấuu

}
21
Khai báo có khởitạo
<tên kiểu 1> <tên biến1>=<giátrị 1>;
<tên kiểu 2> <tên biến2>=<giátrị 2>;
<tên kiểu 3> <tên biến3>=<giátrị 3>, <tên
biến 4>=<giá trị 4>;
Các giá trị khởitạocóthể là hằng, biến
hoặcbiểuthức
22
Ví dụ về khai báo biếncókhởitạo
const int n = 10 ;
void main()
{
int i = 2, j , k = n + 5; // khai báo i và khởitạo
// bằng 2, k bằng 15
float eps = 1.0e-6 ; // khai báo biếnthực
// epsilon khởitạobằng 10-6
char c = 'Z'; // khai báo biếnkítự c
// và khởitạobằng 'A'
char d[100] = "Tin hoc"; // khai báo xâu kí tự d
// chứadòngchữ "Tin hoc"

}
23
Ví dụ về tên gọitrongC++
z Tên gọi đúng: i, i1, j, tinhoc, tin_hoc,
luu_luong

z Tên gọisai: 1i, tin hoc, luu-luong-nuoc
z Các tên sau đây là khác nhau: ha_noi,
Ha_noi, HA_Noi, HA_NOI,
24
Phạmvi củabiến
z Phạmvi củabiếnlànơimàbiếncótác
dụng hay tại đógiátrị củabiếncóthể sử
dụng được
z Chi tiết: sẽ nói trong các bài họcsau
5
25
Gán giá trị cho biến
z Sử dụng phép gán để gán giá trị cho biến:
<tên biến> = <biểuthức>;
Ví dụ:
int n, i = 3; // khởitạoi bằng 3
n = 10; // gán cho n giá trị 10
cout << n <<", " << i << endl; // in ra: 10, 3
i = n / 2; // gán lạigiátrị củai bằng n/2 = 5
cout << n <<", " << i << endl; // in ra: 10, 5
26
Mộtsố lưuý về phép gán
z Phép gán là một phép toán và nó trả lạigiá
trị của<biểuthức>
z Do đócóthể thựchiệnnhiều phép gán:
<biến 1>=<biến 2>=…=<biểuthức>
z Tuy nhiên không nên lạmdụng nhiều phép
gán như trên dẫn đếnchương trình khó đọc
27
Phép toán, biểuthứcvàcâulệnh

28
Phép toán
z C++ có nhiều phép toán chia thành các
loại 1 ngôi, 2 ngôi và thậm chí 3 ngôi
z Các thành phầntêngọi tham gia trong
phép toán gọilàhạng thứchoặc toán
hạng, các kí hiệu phép toán gọi là toán tử
z Ví dụ: a+b: a, b là toán hạng, + là toán tử
z Số ngôi của phép toán chính là số toán
hạng
29
Các phép toán số học
z Cộng (+), trừ (-), nhân (*)
z Chia (/):
{Chia lấyphần nguyên: 5/2 = 2
{Chia thực: 5.0/2.0 = 2.5
z Lấyphầndư (%)
{5 % 2 = 1
{4 % 2 = 0
z Đây là các phép toán 2 ngôi
z Phép trừ còn là 1 ngôi (khi đảodấu)
30
Các phép toán tự tăng giảm
z i++, ++i: Tăng i (biến
nguyên) lên 1 đơnvị
z i , i: Giảmi (biến
nguyên) đi1 đơnvị
z Đây là các phép toán
1 ngôi
i = 4, j = 8j = i + 5; i = i

+ 1;
j = i++ + 5 ;
i = 4, j = 9i = i + 1 ; j = i
+ 5 ;
j = ++i + 5 ;
i = 15 , j = 16i = j ; j = j + 1
;
i = j++; // tăng
sau
i = 16 , j = 16j = j + 1 ; i = j
;
i = ++j; // tăng
trước
KếtquảTương
đương
Phép toán
6
31
Các phép toán so sánh và logic
z Các phép toán so sánh: Bằng nhau (==),
khác nhau (!=), lớnhơn(>), lớnhơnhoặc
bằng (>=), nhỏ hơn(<), nhỏ hơnhoặc
bằng (<=)
z Đây là các phép toán 2 ngôi
z Các phép toán logic: Và (&&), hoặc (||),
phủđịnh (!)
32
Các phép gán
z Gán thông thường <biến> = <biểuthức>
z Gán có điềukiện:

<biến> = <điềukiện>?<biểuthức1>:<biểuthức2>
<điềukiện> là mộtbiểuthức logic, <biểuthức1>
và <biểuthức2> làcácbiểuthức cùng kiểuvới
kiểucủa<biến>
Nếu<điềukiện> đúng thì <biến> nhậngiátrị của
<biểuthức1> ngượclạinhậngiátrị của<biểu
thức2>
33
Ví dụ phép gán có điềukiện
x = (3 + 4 < 7) ? 10: 20 // x = 20 vì 3+4<7
là sai
x = (3 + 4) ? 10: 20 // x = 10 vì 3+4
khác 0, tức điềukiện đúng
x = (a > b) ? a: b // x = số lớnnhất
trong 2 số a, b.
34
Cách viếtgọncủaphépgán
z Phép gán dạng x = x@a, trong đó@ là
một phép toán số học, xử lý bit có thể
đượcviếtgọn thành: x @= a
z Ví dụ:
{x = x + 2 → x += 2
{y = y/2 → y /= 2
35
Biểuthức
z Biểuthức là dãy kí hiệukếthợpgiữacác
toán hạng, phép toán và cặpdấu () theo
một qui tắcnhất định
z Các toán hạng có thể là hằng, biến, hàm
z Ví dụ các biểuthức

{(x +y)*4-2
{(-b + sqrt(delta)) / (2*a)
{3 - x + sqrt(y)
36
Thứ tựưutiêncủa các phép toán
z C++ qui định trậttự tính toán theo các
mức độ ưutiêntừ cao đếnthấpnhư sau:
{Các biểuthức trong cặpdấungoặc()
{Nếucónhiềucặp ngoặclồng nhau thì cặp
trong cùng (sâu nhất) được ưutiêncaohơn
{Các phép toán 1 ngôi (tự tăng-giảm, lấy địachỉ,
lấynội dung con trỏ, phủđịnh …)
{Các phép toán số học.
{Các phép toán quan hệ, logic.
{Các phép gán.
7
37
Chú ý
z Để chương trình rõ ràng, sáng sủa: Với
mỗibiểuthức, nên sử dụng dấu ngoặc để
chỉđịnh mộtcáchtường minh trậttự tính
toán trong biểuthức đó
38
Phép toán chuyển đổikiểu
z C++ hỗ trợ chuyển đổikiểutựđộng:
char ↔int→long int→float→double
z Chuyển đổikiểu không tựđộng:
(tên_kiểu)biểu_thức // cú pháp cũ trong C
hoặc
tên_kiểu(biểu_thức) // cú pháp mới trong C++

39
Câu lệnh
z Một câu lệnh trong C++ đượcthiếtlậptừ
các từ khoá và các biểuthức…vàluôn
luôn đượckết thúc bằng dấuchấmphẩy
z Ví dụ:
cin >> x >> y ;
x = 3 + x ; y = (x = sqrt(x)) + 1 ;
cout << x ;
cout << y ;
40
Khốilệnh
z Mộtsố câu lệnh đượcgọilàlệnh có cấu
trúc, tức bên trong nó lạichứa dãy lệnh
khác.
z Dãy lệnh này phải đượcbaogiữacặpdấu
ngoặc {} và đượcgọilàkhốilệnh.
z Ví dụ:
if (a==b) {
x *= 2; y= y-2; // Font đỏ: Khốilệnh
}
41
Thư viện các hàm toán học
z #include <math.h>
z abs(x), labs(x), fabs(x): trả lạigiátrị tuyệt đốicủa
mộtsố nguyên, số nguyên dài và số thực.
z pow(x, y): hàm mũ, trả lạigiátrị x lũythừay (xy).
z exp(x): hàm mũ, trả lạigiátrị e mũ x (ex).
z log(x), log10(x): trả lại lôgarit cơ số e và lôgarit
thập phân của x (lnx, logx) .

z sqrt(x): trả lạicănbậc2 củax.
z atof(s_number): trả lạisố thực ứng vớisố
viết
dướidạng xâu kí tự s_number.
z Hàm lượng giác: sin(x), cos(x), tan(x)
42
Các vấn đề cầnnhớ
z Các kiểudữ liệucủaC++
z Hằng và biến
z Phép toán (toán tử), biểuthức, toán hạng,
độ ưutiêncủa các phép toán
z Ngôi của phép toán
z Câu lệnh và khốilệnh
8
43
Bài tập
z Làm tấtcả các bài tậptừ số 1 đếnsố 20
trong giáo trình (trang 38, 39, 40)
z Giờ thực hành: Yêu cầusinhviênchạy
các chương trình trong tuần 1 và tuần2
trên máy tính

×