Violet
Dethi

Tin tức thư viện

Chức năng Dừng xem quảng cáo trên violet.vn

12087057 Kính chào các thầy, cô! Hiện tại, kinh phí duy trì hệ thống dựa chủ yếu vào việc đặt quảng cáo trên hệ thống. Tuy nhiên, đôi khi có gây một số trở ngại đối với thầy, cô khi truy cập. Vì vậy, để thuận tiện trong việc sử dụng thư viện hệ thống đã cung cấp chức năng...
Xem tiếp

Hỗ trợ kĩ thuật

  • (024) 62 930 536
  • 091 912 4899
  • hotro@violet.vn

Liên hệ quảng cáo

  • (024) 66 745 632
  • 096 181 2005
  • contact@bachkim.vn

tài liệu C++(3)

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Lê Văn Thuận (trang riêng)
Ngày gửi: 00h:21' 09-04-2024
Dung lượng: 682.0 KB
Số lượt tải: 51
Số lượt thích: 0 người
.c
om
ng

th

an

co

Ngôn ngữ lập trình C++

cu

u

du
o

ng

Chương 2 – Các kiểu dữ liệu cơ bản
Các cấu trúc điều khiển

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Tài liệu đọc thêm

.c
om

• Tài liệu đọc thêm cho chương này:

cu

u

du
o

ng

th

an

co

ng

– Section 2.1. Complete C++ Language Tutorial (CCLT)
– Day 7. Teach Yourself C++ in 21 Days (TY21)
– Namespace (Sec.5-2.CCLT) (Không bắt buộc)

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Chương 2 – Kiểu dữ liệu và phép toán cơ bản
Cấu trúc điều khiển và cấu trúc chương trình

.c
om

Đề mục
Các kiểu dữ liệu cơ bản

2.2

Các phép gán tắt, phép tăng, phép giảm

2.3

Các phép toán logic

2.4

Thuật toán, mã giả, điều khiển của chương trình, sơ đồ khối

2.5

Sơ lược về các cấu trúc điều khiển

2.6

Cấu trúc lựa chọn if, if/else

2.7

Phép toán lựa chọn 3 ngôi

2.8

Cấu trúc lặp while

2.9

Thiết lập thuật toán

2.10

Điều khiển lặp bằng con đếm và giá trị canh

cu

u

du
o

ng

th

an

co

ng

2.1

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Chương 2 – Kiểu dữ liệu và phép toán cơ bản
Cấu trúc điều khiển và cấu trúc chương trình

.c
om

Đề mục (tiếp theo)

Các cấu trúc lồng nhau

2.12

Vòng lặp for

2.13

Cấu trúc đa lựa chọn switch

2.14

Vòng lặp do/while

2.15

break và continue

2.16

Sơ lược về lập trình cấu trúc

cu

u

du
o

ng

th

an

co

ng

2.11

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

2.1 Các kiểu dữ liệu cơ bản

cu

u

du
o

ng

th

an

co

ng

.c
om

char
ký tự hoặc số nguyên 8 bit
short
số nguyên 16 bit
long
số nguyên 32 bit
int
số nguyên độ dài bằng 1 word (16 bit
hoặc 32 bit)
float
số chấm động 4 byte
double
số chấm động 8 byte
long double số chấm động 10 byte
bool
giá trị Boolean, true hoặc false
wchar_t
ký tự 2 byte, lưu bảng chữ cái quốc tế
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

2.2 Các phép toán cơ bản

x = 5;

.c
om

• phép gán – assignation (=)

//x: lvalue, 5: rvalue

ng

– là biểu thức có giá trị là giá trị được gán

cu

u

du
o

ng

th

an

co

• các phép toán số học - Arithmetic operators
(+, -, *, /, %)
• các phép gán kép - Compound assignation
operators
(+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)
• phép tăng và phép giảm (++, --)

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

2.2 Các phép toán cơ bản

an

co

ng

.c
om

• các phép quan hệ - relational operators
( ==, !=, >, <, >=, <= )
• các phép toán logic - Logic operators ( !, &&, || )
• phép điều kiện - Conditional operator ( ? ).

th

(7 == 5 ? 4 : 3) cho kết quả 3 do 7 khác 5.

cu

u

du
o

ng

• các toán tử bit - Bitwise Operators
( &, |, ^, ~, <<, >> ).

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

2.2 Các phép gán tắt

.c
om

• Các biểu thức gán tắt - Assignment expression
abbreviations

ng

– Phép gán cộng

co

c = c + 3; viết tắt thành c += 3;

an

• Các lệnh có dạng

th

variable = variable operator expression;

ng

có thể được viết lại thành

du
o

variable operator= expression;

• Các phép gán khác
4
5
3
9

u

-=
*=
/=
%=

cu

d
e
f
g

CuuDuongThanCong.com

(d
(e
(f
(g

=
=
=
=

d
e
f
g

*
/
%

4)
5)
3)
9)

https://fb.com/tailieudientucntt

• Phép tăng - Increment operator (++)
– có thể được dùng thay cho c += 1

co

– có thể được dùng thay cho c -= 1

ng

• Phép giảm - Decrement operator (--)

.c
om

2.2 Các phép tăng và giảm

an

• Tăng/giảm trước – Preincrement/Predecrement

th

• ++c hoặc --c

du
o

ng

• Giá trị của biến bị thay đổi, sau đó biểu thức chứa nó được tính giá trị.
• Biểu thức có giá trị là giá trị của biến sau khi tăng/giảm

• Tăng/giảm sau - Postincrement/Predecrement

cu

u

• c++ hoặc c--

• Biểu thức chứa biến được thực hiện, sau đó biến được thay đổi.
• Biểu thức có giá trị là giá trị của biến trước khi tăng/giảm

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

2.2 Các phép tăng và giảm

.c
om

• Ví dụ: nếu c = 5
– cout << ++c;
• c nhận giá trị 6, rồi được in ra

ng

– cout << c++;

th

an

co

• in giá trị 5 (cout được chạy trước phép tăng).
• sau đó, c nhận giá trị 6

ng

• Khi biến không nằm trong biểu thức

du
o

– Tăng trước và tăng sau có kết quả như nhau

cu



u

++c;
cout << c;

c++;
cout << c;

là như nhau
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

// Fig. 2.14: fig02_14.cpp
// Preincrementing and postincrementing.
#include
using std::cout;
using std::endl;

an

th

assign 5 to c
print 5
print 5 then postincrement
print 6

5
5
6
5
6
6

du
o

ng

// demonstrate postincrement
c = 5;
//
cout << c << endl;
//
cout << c++ << endl;
//
cout << c << endl << endl; //

co

ng

// function main begins program execution
int main()
{
int c;
// declare variable

.c
om

fig02_14.cpp
(1 of 2)

u

// demonstrate preincrement
c = 5;
//
cout << c << endl;
//
cout << ++c << endl;
//
cout << c << endl;
//

cu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

return 0;

assign 5 to c
print 5
preincrement then print 6
print 6

// indicate successful termination

} // end function main
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

2.3 Các phép toán logic

ng

.c
om

• được dùng làm điều kiện trong các vòng lặp và
lệnh if
• && (logical AND)

co

– true nếu cả hai điều kiện là true

du
o

• || (logical OR)

ng

th

an

if ( gender == 1 && age >= 65 )
++seniorFemales;

– true nếu ít nhất một trong hai điều kiện là true

cu

u

if ( semesterAverage >= 90 || finalExam >= 90 )
cout << "Student grade is A" << endl;

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

2.3 Các phép toán logic

.c
om

• ! (logical NOT, phủ định logic – logical negation)
– trả về giá trị true khi điều kiện là false, và ngược lại

co

ng

if ( !( grade == sentinelValue ) )
cout << "The next grade is " << grade << endl;

an

tương đương với:

cu

u

du
o

ng

th

if ( grade != sentinelValue )
cout << "The next grade is " << grade << endl;

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)

.c
om

• Lỗi thường gặp

• Các khía cạnh của vấn đề

ng

– Thường không tạo lỗi cú pháp (syntax error)

co

– biểu thức có giá trị có thể được dùng làm điều kiện

an

• bằng không = false, khác không = true

cu

u

du
o

ng

th

– Các lệnh gán cũng tạo giá trị (giá trị được gán)

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)

.c
om

• Ví dụ

ng

if ( 4 == payCode )
cout << "You get a bonus!" << endl;

th

• Nếu == bị thay bởi =

an

co

– Nếu mã tiền lương (paycode) là 4 thì thưởng

du
o

ng

if ( payCode = 4 )
cout << "You get a bonus!" << endl;

cu

u

– Paycode được gán giá trị 4 (không cần biết giá trị của
paycode trước đó)
– lệnh gán cho giá trị true (vì 4 khác 0)
– trường hợp nào cũng được thưởng

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)

.c
om

• Lvalue

ng

– là biểu thức có thể xuất hiện tại vế trái của phép gán
– xác định một vùng nhớ có thể được gán trị (i.e, các biến)

co

• x = 4;

an

• Rvalue

du
o

ng

th

– chỉ xuất hiện bên phải phép gán
– hằng, các giá trị (literal)
• không thể viết 4 = x;

cu

u

• Lvalue có thể được dùng như các rvalue, nhưng
chiều ngược lại là không thể

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

• Trước khi viết chương trình

ng

– Hiểu kỹ bài toán
– Lập kế hoạch giải quyết bài toán

.c
om

Viết chương trình

co

• Trong khi viết chương trình

cu

u

du
o

ng

th

an

– Biết lời giải có sẵn cho các bài toán con
– Sử dụng các nguyên lý lập trình tốt

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Thuật toán - Algorithm

.c
om

• Các bài toán tin học

ng

– được giải bằng cách thực hiện một chuỗi hành động theo
một thứ tự cụ thể

co

• Thuật toán: một quy trình quyết định

du
o

ng

th

an

– Các hành động cần thực hiện
– Thứ tự thực hiện
– Ví dụ: cách nấu một món ăn

• Điều khiển của chương trình – Program Control

cu

u

– Chỉ ra thứ tự thực hiện các lệnh

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Mã giả - Pseudocode

ng

– tương tự với ngôn ngữ hàng ngày

.c
om

• Mã giả: ngôn ngữ không chính thức được dùng để
mô tả thuật toán

co

• Không chạy được trên máy tính

th

an

– dùng để mô tả chương trình trước khi viết chương trình

ng

• dễ chuyển thành chương trình C++

du
o

– chỉ gồm các lệnh chạy

Ví dụ:
tìm số nhỏ hơn trong hai số

cu

u

• không cần khai báo biến

CuuDuongThanCong.com

1.

nhập 2 số x,y

2.

nếu x>y thì in y ra màn hình

3.

nếu không, in x ra màn hình

https://fb.com/tailieudientucntt

Các cấu trúc điều khiển - Control Structures
Khái niệm

.c
om

• Thực thi tuần tự - Sequential execution
– Các lệnh được thực hiện theo thứ tự tuần tự

ng

• Chuyển điều khiển - Transfer of control

ng

th

• 3 cấu trúc điều khiển

an

co

– Lệnh tiếp theo được thực thi không phải lệnh tiếp theo trong
chuỗi lệnh.

du
o

– Cấu trúc tuần tự - Sequence structure
• theo mặc định, chương trình chạy tuần tự từng lệnh

cu

u

– Các cấu trúc chọn lựa - Selection structures
• if, if/else, switch

– Các cấu trúc lặp - Repetition structures
• while, do/while, for
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Các cấu trúc điều khiển

.c
om

• Các từ khóa của C++

– Không thể dùng làm tên biến hoặc tên hàm

ng

C + + K e y w o rd s

co

K e y w o r d s c o m m o n to th e
C a n d C + + p r o g r a m m in g
la n g u a g e s

char

const

continue

default

do

double

else

enum

extern

float

for

goto

if

int

long

register

return

short

signed

sizeof

static

struct

union

unsigned

void

bool

catch

class

const_cast

dynamic_cast

explicit

false

friend

mutable

namespace

new

operator

private

protected

public

reinterpret_cast

static_cast

template

this

throw

true

try

typeid

typename

using

virtual

typedef

volatile

while

u

C + + o n ly k e y w o r d s

inline

cu

asm
delete

du
o

switch

an

case

th

break

ng

auto

wchar_t

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Các cấu trúc điều khiển
true

print “Passed”

.c
om

grade >= 60

ng

false

co

• Sơ đồ khối - Flowchart

ng

th

an

– mô tả thuật toán bằng hình vẽ
– gồm các ký hiệu đặc biệt được nối bằng các mũi tên
(flowlines)
– Hình chữ nhật (ký hiệu hành động)

du
o

• kiểu hành động bất kỳ

– ký hiệu oval

cu

u

• Bắt đầu hoặc kết thúc một chương trình,
hoặc một đoạn mã (hình tròn)

• Các cấu trúc điều khiển có đúng 1 đầu vào, 1 đầu ra
– Kết nối đầu ra của một cấu trúc điều khiển với đầu vào của
cấu trúc tiếp theo
– xếp chồng các cấu trúc điều khiển
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Cấu trúc lựa chọn if

.c
om

• Cấu trúc lựa chọn - Selection structure

ng

– chọn giữa các tuyến hành động khác nhau
– ví dụ bằng mã giả:

an

co

If student's grade is greater than or equal to 60
Print “Passed”

th

– Nếu điều kiện thỏa mãn (có giá trị true)

ng

• lệnh Print được thực hiện, chương trình chạy tiếp lệnh tiếp theo

du
o

– Nếu điều kiện không thỏa mãn (có giá trị false)
• lệnh Print bị bỏ qua, chương trình chạy tiếp

cu

u

– Cách viết thụt đầu dòng làm chương trình dễ đọc hơn
• C++ bỏ qua các ký tự trắng (tab, space, etc.)

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Cấu trúc lựa chọn if

.c
om

• Dịch sang C++

co

grade >= 60

true

print “Passed”

false

an

if ( grade >= 60 )
cout << "Passed";

ng

If student's grade is greater than or equal to 60
Print “Passed”

th

• ký hiệu hình thoi (ký hiệu quyết định)

du
o

ng

– đánh đấu chọn lựa cần thực hiện
– chứa một biểu thức có giá trị true hoặc false

cu

• cấu trúc if

u

• kiểm tra điều kiện, đi theo đường thích hợp

– Single-entry/single-exit

Một biểu thức bất kỳ đều
có thể được sử dụng làm
điều kiện cho lựa chọn.
bằng 0 - false
khác 0 - true
Ví dụ:

3 - 4 có giá trị true
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Cấu trúc chọn lựa if/else

.c
om

• if

– Thực hiện hành động nếu điều kiện thỏa mãn

ng

• if/else

an

co

– thực hiện những hành động khác nhau tùy theo điều kiện được
thỏa mãn hay không

th

• mã giả

cu

• mã C++

u

du
o

ng

if student's grade is greater than or equal to 60
print “Passed”
else
print “Failed”

if ( grade >= 60 )
cout << "Passed";
else
cout << "Failed";
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Cấu trúc chọn lựa if/else

.c
om

• phép toán điều kiện 3 ngôi (?:)

– ba tham số (điều kiện, giá trị nếu true, giá trị nếu false)

ng

• mã có thể được viết:

th

Value if true

Value if false

du
o

ng

Condition

an

co

cout << ( grade >= 60 ? “Passed” : “Failed” );

print “Failed”

grade >= 60

true

cu

u

false

CuuDuongThanCong.com

print “Passed”

https://fb.com/tailieudientucntt

Cấu trúc chọn lựa if/else

.c
om

• Các cấu trúc if/else lồng nhau

ng

– lệnh này nằm trong lệnh kia, kiểm tra nhiều trường hợp
– Một khi điều kiện thỏa mãn, các lệnh khác bị bỏ qua

cu

u

du
o

ng

th

an

co

if student's grade is greater than or equal to 90
Print “A”
else
if student's grade is greater than or equal to 80
Print “B”
else
if student's grade is greater than or equal to 70
Print “C”
else
if student's grade is greater than or equal to 60
Print “D”
else
Print “F”
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Cấu trúc chọn lựa if/else

ng

// 90 and above
// 80-89
// 70-79

// 60-69
// less than 60

cu

u

du
o

ng

th

an

co

if ( grade >= 90 )
cout << "A";
else if ( grade >= 80 )
cout << "B";
else if ( grade >= 70 )
cout << "C";
else if ( grade >= 60 )
cout << "D";
else
cout << "F";

.c
om

• Ví dụ

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Cấu trúc chọn lựa if/else

>= 60 )
"Passed.\n";

co

if ( grade
cout <<
else {
cout <<
cout <<

ng

– tập lệnh bên trong một cặp ngoặc

.c
om

• lệnh phức – compound statement

th

an

"Failed.\n";
"You must take this course again.\n";

ng

}

du
o

– nếu không có ngoặc,

cout << "You must take this course again.\n";

cu

u

sẽ luôn được thực hiện

• Khối chương trình - Block
– tập lệnh bên trong một cặp ngoặc

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Cấu trúc lặp while

.c
om

• Cấu trúc lặp - Repetition structure

co

ng

– hành động được lặp đi lặp lại trong khi một điều kiện nào đó
còn được thỏa mãn
– mã giả

th

an

Trong khi vẫn còn tên hàng trong danh sách đi chợ của tôi
Mua mặt hàng tiếp theo và gạch tên nó ra khỏi danh sách

cu

u

du
o

ng

– vòng while lặp đi lặp lại cho đến khi điều kiện không thỏa
mãn

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Cấu trúc lặp while

.c
om

• Ví dụ

an

co

ng

int product = 2;
while ( product <= 1000 )
product = 2 * product;

u

du
o

ng

th

• Sơ đồ khối của vòng while

cu

product <= 1000

true

product = 2 * product

false

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Thiết lập thuật toán
(Điều khiển lặp bằng con đếm)

.c
om

• Vòng lặp được điều khiển bằng con đếm (counter)
– Lặp đến khi con đếm đạt đến giá trị nào đó

ng

• Lặp hữu hạn - Definite repetition

th

an

• Ví dụ

co

– số lần lặp biết trước

cu

u

du
o

ng

Một lớp gồm 10 sinh viên làm một bài thi. Cho biết các điểm
thi (số nguyên trong khoảng từ 0 đến 100). Tính trung bình
điểm thi của lớp.

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Thiết lập thuật toán
(Điều khiển lặp bằng con đếm)

.c
om

• Mã giả cho ví dụ:

u

du
o

ng

th

an

co

ng

Đặt tổng bằng 0
Đặt con đếm bằng 1
Trong khi con đếm nhỏ hơn hoặc bằng 10
Nhập điểm tiếp theo
Cộng điểm đó vào tổng
Thêm 1 vào con đến
Đặt trung bình lớp bằng tổng chia cho 10
In trung bình lớp

cu

• Tiếp theo: Mã C++ cho ví dụ trên

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

// Fig. 2.7: fig02_07.cpp
// Class average program with counter-controlled repetition.
#include

fig02_07.cpp
(1 of 2)

ng

co

program execution

ng

th

an

sum of grades input by user
number of grade to be entered next
grade value
average of grades

du
o

// function main begins
int main()
{
int total;
//
int gradeCounter; //
int grade;
//
int average;
//

.c
om

using std::cout;
using std::cin;
using std::endl;

u

// initialization phase
total = 0;
// initialize total
gradeCounter = 1;
// initialize loop counter

cu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

loop 10 times
prompt for input
read grade from user
add grade to total
increment counter

fig02_07.cpp
(2 of 2)
fig02_07.cpp
output (1 of 1)

ng

// termination phase
average = total / 10;

//
//
//
//
//

.c
om

// processing phase
while ( gradeCounter <= 10 ) {
cout << "Enter grade: ";
cin >> grade;
total = total + grade;
gradeCounter = gradeCounter + 1;
}

co

Con
đếm được division
tăng thêm 1 mỗi lần vòng lặp chạy.
// integer
Cuối cùng, con đếm làm vòng lặp kết thúc.

th

an

// display result
cout << "Class average is " << average << endl;

ng

// indicate program ended successfully

u

} // end function main

du
o

return 0;

cu

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

CuuDuongThanCong.com

Enter
Enter
Enter
Enter
Enter
Enter
Enter
Enter
Enter
Enter
Class

https://fb.com/tailieudientucntt

grade: 98
grade: 76
grade: 71
grade: 87
grade: 83
grade: 90
grade: 57
grade: 79
grade: 82
grade: 94
average is 81

Thiết lập thuật toán
(Điều khiển lặp bằng lính canh)

.c
om

• Giả sử bài toán trở thành:

th

an

co

ng

Viết một chương trình tính điểm trung bình của lớp, chương
trình sẽ xử lý một số lượng điểm tùy ý mỗi khi chạy chương
trình.
– Số sinh viên chưa biết
– Chương trình sẽ làm thế nào để biết khi nào thì kết thúc?

ng

• Giá trị canh

cu

u

du
o

– Ký hiệu “Kết thúc của dữ liệu vào”
– Vòng lặp kết thúc khi nhập canh
– Canh được chọn để không bị lẫn với dữ liệu vào thông
thường
• trong trường hợp này là -1

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Thiết lập thuật toán
(Điều khiển lặp bằng lính canh)

.c
om

• Thiết kế từ trên xuống, làm mịn từng bước
– Bắt đầu bằng mã giả cho mức cao nhất

ng

Tính trung bình điểm thi của lớp

co

– Chia thành các nhiệm vụ nhỏ hơn, liệt kê theo thứ tự

cu

u

du
o

ng

th

an

Khởi tạo các biến
Nhập, tính tổng, và đếm các điểm thi
Tính và in trung bình điểm thi

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

• Nhiều chương trình có 3 pha
– Khởi tạo - Initialization

ng

• Khởi tạo các biến chương trình

.c
om

Thiết lập thuật toán
(Điều khiển lặp bằng lính canh)

co

– Xử lý - Processing

th

– Kết thúc - Termination

an

• Nhập dữ liệu, điều chỉnh các biến trong chương trình

ng

• Tính và in kết quả cuối cùng

cu

u

du
o

– Giúp việc chia nhỏ chương trình để làm mịn từ trên xuống

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Thiết lập thuật toán
(Điều khiển lặp bằng lính canh)

ng

an

co

Khởi tạo các biến
thành
Khởi tạo tổng bằng 0
Khởi tạo biến đếm bằng 0

.c
om

• Làm mịn pha khởi tạo

th

• Xử lý

cu

u

du
o

ng

Nhập, tính tổng, và đếm các điểm thi
thành
Nhập điểm đầu tiên (có thể là canh)
Trong khi người dùng còn chưa nhập canh
Cộng điểm vừa nhập vào tổng
Cộng thêm 1 vào biến đếm điểm
Nhập điểm tiếp theo (có thể là canh)
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Thiết lập thuật toán
(Điều khiển lặp bằng lính canh)

.c
om

• Kết thúc

du
o

ng

th

an

co

ng

Tính và in trung bình điểm thi
thành
Nếu con đếm khác 0
Đặt trung bình bằng tổng chia cho con đếm
In giá trị trung bình
Nếu không
In “Không nhập điểm nào”

cu

u

• Tiếp theo: chương trình C++

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

// Fig. 2.9: fig02_09.cpp
// Class average program with sentinel-controlled repetition.
#include

.c
om

std::cout;
std::cin;
std::endl;
std::fixed;

ng

using
using
using
using

fig02_09.cpp
(1 of 3)

// parameterized stream manipulators

using std::setprecision;

// sets numeric output precision

th

an

co

#include

u

du
o

ng

// function main begins program execution
int main()
{
Dữ liệu kiểu double dùng để
int total;
// sum of grades
biểu diễn số thập phân.
int gradeCounter; // number of grades entered
int grade;
// grade value

cu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

double average;

// number with decimal point for average

// initialization phase
total = 0;
// initialize total
gradeCounter = 0; // initialize loop counter
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

// prompt for input
// read grade from user

.c
om

// processing phase
// get first grade from user
cout << "Enter grade, -1 to end: ";
cin >> grade;

co

ng

// loop until sentinel value read from user
while ( grade != -1 ) {
total = total + grade;
// add grade to total
gradeCounter = gradeCounter + 1; // increment counter
// prompt for input
// read next grade

th

an

cout << "Enter grade, -1 to end: ";
cin >> grade;

du
o

ng

} // end while

u

// termination phase
// if user entered at least one grade ...
if ( gradeCounter != 0 ) {

cu

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

// calculate average of all grades entered
average = static_cast< double >( total ) / gradeCounter;

static_cast() coi total như một double tạm thời (casting).
Cần thiết vì phép chia số nguyên bỏ qua phần dư.
gradeCounter là một biến int, nhưng nó được nâng lên kiểu double.
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

fig02_09.cpp
(2 of 3)

// display average with two digits of precision
cout << "Class average is " << setprecision( 2 )
<< fixed << average << endl;

fig02_09.cpp
(3 of 3)

.c
om

} // end if part of if/else

// indicate program ended successfully

co

return 0;

fixed làm số liệu ra được in
theo dạng thông thường
(không phải dạng ký hiệu
khoa học); qui định in cả các
chữ số 0 ở sau và in dấu chấm
thập phân.

an

} // end function main

ng

du
o

75
94
97
88
70
64
83
89
-1

u

grade, -1 to end:
grade, -1 to end:
grade, -1 to end:
grade, -1 to end:
grade, -1 to end:
grade, -1 to end:
grade, -1 to end:
grade, -1 to end:
grade, -1 to end:
average is 82.50

setprecision(2)in hai
chữ số sau dấu phảy (làm tròn
theo độ chính xác quy định).
Các chương trình dùng hàm
này phải include

Include

cu

Enter
Enter
Enter
Enter
Enter
Enter
Enter
Enter
Enter
Class

fig02_09.cpp
output (1 of 1)

ng

else // if no grades were entered, output appropriate message
cout << "No grades were entered" << endl;

th

49
50
51
52
53
54
55
56
57
58
59
60

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Các cấu trúc điều khiển lồng nhau

.c
om

• Phát biểu bài toán

an

co

ng

Một trường có danh sách kết quả thi (1 = đỗ, 2 = trượt) của
10 sinh viên. Viết một chương trình phân tích kết quả thi.
Nếu có nhiều hơn 8 sinh viên đỗ thì in ra màn hình dòng
chữ “Tăng tiền học phí".

th

• Lưu ý

ng

– Chương trình xử lý 10 kết quả thi

du
o

• số lần lặp cố định, sử dụng vòng lặp điều khiển bằng biến đếm

u

– Có thể sử dụng hai con đếm

cu

• Một con đếm để đếm số lượng đỗ
• Một con đếm khác đếm số lương trượt

– Mỗi kết quả thi chỉ là 1 hoặc 2
• Nếu không phải 1 thì coi là 2
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Các cấu trúc điều khiển lồng nhau

.c
om

• Phác thảo mức cao nhất - Top level outline
Analyze exam results and decide if tuition should be raised

ng

• Làm mịn lần một - First refinement

ng

th

an

co

Initialize variables
Input the ten quiz grades and count passes and failures
Print a summary of the exam results and decide if tuition
should be raised

du
o

• Làm mịn - Refine

cu

u

Initialize variables
to
Initialize passes to zero
Initialize failures to zero
Initialize student counter to one
CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Các cấu trúc điều khiển lồng nhau

.c
om

• Refine

cu

u

du
o

ng

th

an

co

ng

Input the ten quiz grades and count passes and failures
to
While student counter is less than or equal to ten
Input the next exam result
If the student passed
Add one to passes
Else
Add one to failures
Add one to student counter

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Các cấu trúc điều khiển lồng nhau

.c
om

• tiếp tục làm mịn

du
o

ng

th

an

co

ng

Print a summary of the exam results and decide if tuition should
be raised
to
Print the number of passes
Print the number of failures
If more than eight students passed
Print “Raise tuition”

cu

u

• Program next

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

// Fig. 2.11: fig02_11.cpp
// Analysis of examination results.
#include

fig02_11.cpp
(1 of 2)

.c
om

using std::cout;
using std::cin;
using std::endl;

du
o

ng

th

an

co

ng

// function main begins program execution
int main()
{
// initialize variables in declarations
int passes = 0;
// number of passes
int failures = 0;
// number of failures
int studentCounter = 1;
// student counter
int result;
// one exam result

u

// process 10 students using counter-controlled loop
while ( studentCounter <= 10 ) {

cu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

// prompt user for input and obtain value from user
cout << "Enter result (1 = pass, 2 = fail): ";
cin >> result;

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

// if result 1, increment passes; if/else nested in while
if ( result == 1 )
// if/else nested in while
passes = passes + 1;

fig02_11.cpp
(2 of 2)

.c
om

else // if result not 1, increment failures
failures = failures + 1;

co

ng

// increment studentCounter so loop eventually terminates
studentCounter = studentCounter + 1;

an

} // end while

du
o

ng

th

// termination phase; display number of passes and failures
cout << "Passed " << passes << endl;
cout << "Failed " << failures << endl;

u

// if more than eight students passed, print "raise tuition"
if ( passes > 8 )
cout << "Raise tuition " << endl;
return 0;

cu

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

// successful termination

} // end function main

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

2
2
2
2
2
2
2
2
2
2

=
=
=
=
=
=
=
=
=
=

fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):

1
2
2
1
1
1
2
1
1
2

Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Passed 9
Failed 1
Raise tuition

=
=
=
=
=
=
=
=
=
=

pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,

2
2
2
2
2
2
2
2
2
2

=
=
=
=
=
=
=
=
=
=

fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):

1
1
1
1
2
1
1
1
1
1

fig02_11.cpp
output (1 of 1)

.c
om

pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,

ng

=
=
=
=
=
=
=
=
=
=

ng

du
o

u

CuuDuongThanCong.com

th

an

co

(1
(1
(1
(1
(1
(1
(1
(1
(1
(1

cu

Enter result
Enter result
Enter result
Enter result
Enter result
Enter result
Enter result
Enter result
Enter result
Enter result
Passed 6
Failed 4

https://fb.com/tailieudientucntt
 
Gửi ý kiến