.3| CẤU TRÚC LẶP WHILE

Một phần của tài liệu Kỹ thuật lập trình 1 Bậc cao đẳng (Trang 84)

CÚ PHÁP

5.3.1|

while (<Điều kiện lặp>)

{ <Khối lệnh>;

}

Ý NGHĨA

5.3.2|

Vòng lặp sẽ được thực hiện lặp đi lặp lại khi điều kiện trên là đúng (!= 0).

Chương trình sẽ chuyển đến thực hiện lệnh tiếp sau vòng lặp khi điều kiện trên là sai (==0). Đ Khối lệnh ĐKIE Nl a p> S

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 79 VÍ DỤ 5.3.3| Ví dụ 1: in dãy số từ 1 đến 10 #include "iostream" #include "iomanip" using namespace std; void main() { int i;

cout << "\n Day so tu 1 den 10 :"; i = 1; while(i <= 10) { cout << setw(3) << i; i++; } cout << endl; system("pause"); } Kết quả: Ví dụ 2: Nhập n , tính tổng từ 1 đến n #include "iostream" using namespace std;

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 80

void main()

{

int n;//input

int nTong = 0;// output int i; //nhap n cout << "nhap n: "; cin >> n; //tinh tong 1+2+3+....+n i = 1; while( i <= n) {

nTong = nTong +i; i++;

}

cout << "tong = " << nTong; cout << endl; system("pause"); } Kết quả: Ví dụ 3: tính tổng dãy số thực nhập từ bàn phím, dừng khi nhập -1; #include "iostream"

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 81

using namespace std; void main()

{

float fN = 0; //input

float fTong = 0; // output

//nhap fN va tinh tong

while(fN != -1)

{

fTong = fTong + fN ;

cout << " nhap so thuc = "; cin >> fN;

}

cout << " tong = " << fTong; cout << endl;

system("pause"); }

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 82 5.4| CẤU TRÚC LẶP DO … WHILE CÚ PHÁP 5.4.1| do{ <Khối lệnh>; }while(<điều kiện lặp>); Ý NGHĨA 5.4.2|

Khối lệnh được thực hiện trước, sau đó mới kiểm tra điều kiện lặp. Nếu điều

kiện sai (== 0), thì thốt khỏi vịng lặp, nếu điều kiện cịn đúng ( != 0) thì vịng lặp được tiếp tục. VÍ DỤ 5.4.3| Ví dụ 1: Chương trình in dãy số từ 1 đến 10 #include "iostream" #include "iomanip" using namespace std;

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 83

void main()

{

int i;

cout << "\n Day so tu 1 den 10 :"; i = 1; do { cout << setw(3) << i; i++; }while(i <= 10); cout << endl; system("pause"); } Kết quả:

Ví dụ 2: Chương trình cho phép người dùng nhập vào một số n, tính tổng các

số từ 1 đến n #include "iostream" using namespace std; void main() { int n;//input

int nTong = 0;// output int i;

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 84 cout << "nhap n: "; cin >> n; //tinh tong 1+2+3+....+n i = 1; do {

nTong = nTong +i; i++;

}while( i <= n);

cout << "tong = " << nTong; cout << endl; system("pause"); } Kết quả: Ví dụ 3: tính tổng dãy số thực nhập từ bàn phím, dừng khi nhập -1; #include "iostream" using namespace std; void main() { float fN = 0; //input

float fTong = 0; // output

//nhap fN va tinh tong

do

{

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 85

cout << " nhap so thuc = "; cin >> fN;

}while(fN != -1);

cout << " tong = " << fTong; cout << endl;

system("pause"); }

Kết quả:

5.5| PHÂN BIỆT CÁC CẤU TRÚC LẶP

 Phân biệt cấu trúc for và while:

- Khi x|c định được số lần lặp có thể sử dụng while, do while, for, khi chưa x|c định số lần lặp chỉ có thể sử dụng while, do while.

- Tất cả bài tốn viết được bằng for đều có thể viết được bằng while, do while,

điều ngược lại không đúng.

- while kiểm tra điều kiện trước khi thực hiện khối lệnh, do đó có thể khơng

thực hiện lặp lần nào, do while thực hiện khối lệnh một lần trước khi kiểm tra điều kiện nên khối lệnh được thực hiện ít nhất một lần.

Ví dụ: Viết chương trình tính tổng các số nguyên được nhập vào, kết thúc khi nhập -1

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 86 #include "iostream" using namespace std; void main() { int nN = 0; //input

int nTong = 0; // output

//nhap fN va tinh tong

while(nN != -1)

{

nTong = nTong + nN ;

cout << " nhap so nguyen = "; cin >> nN;

}

cout << " tong = " << nTong; cout << endl; system("pause"); } Sử dụng do … while : #include "iostream" using namespace std; void main() { int nN = 0; //input

int nTong = 0; // output

//nhap fN va tinh tong

do

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 87

nTong = nTong + nN ;

cout << " nhap so nguyen = "; cin >> nN;

}while(nN != -1);

cout << " tong = " << nTong; cout << endl;

system("pause"); }

Bài toán này khơng thể sử dụng cấu trúc for vì khơng x|c định số lần lặp cụ thể

5.6| CÂU LỆNH BREAK VÀ CONTINUE LỆNH BREAK LỆNH BREAK

5.6.1|

Câu lệnh break: Dùng để thốt khỏi vịng lặp. Khi gặp câu lệnh này trong vịng lặp, chương trình sẽ thốt ra khỏi vịng lặp và chỉ đến câu lệnh liền sau nó. Nếu nhiều vịng lặp -->break sẽ thốt ra khỏi vịng lặp gần nhất. Ngồi ra, break cịn được dùng trong cấu trúc lựa chọn switch.

Ví dụ: Ví dụ 1: in dãy số từ 1 đến 10 #include "iostream" #include "iomanip" using namespace std; void main() { int i;

cout << "\n Day so tu 1 den 10 :";

for (i = 1; i <= 10; i ++)

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 88 cout << setw(5) << i; } cout << endl; system("pause"); } Kết quả: Ví dụ 2: #include "iostream" #include "iomanip" using namespace std; void main() { int i;

cout << "\n Day so tu 1 den 10 :";

for (i = 1; i <= 10; i ++) { if( i == 5) { break; } cout << setw(5) << i; } cout << endl; system("pause"); }

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 89 Kết quả:

LỆNH CONTINUE

5.6.2|

Câu lệnh continue: Khi gặp lệnh này trong các vịng lặp, chương trình sẽ bỏ qua phần cịn lại trong vòng lặp và tiếp tục thực hiện lần lặp tiếp theo.

Ví dụ 3: #include "iostream" #include "iomanip" using namespace std; void main() { int i;

cout << "\n Day so tu 1 den 10 :";

for (i = 1; i <= 10; i ++) { if( i == 5) { continue; } cout << setw(5) << i; } cout << endl; system("pause"); }

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 90 Kết quả:

5.7| CÂU LỆNH RETURN Ý NGHĨA Ý NGHĨA

5.7.1|

Lênh return trả về giá trị biểu thức đứng sau return và kết thúc + thoát khỏi hàm. CÚ PHÁP 5.7.2| return [biểu thức]; 5.8| CÂU LỆNH GOTO Ý NGHĨA 5.8.1|

Lệnh goto cho phép nhảy tới bất kỳ điểm nào trong chương trình.

CÚ PHÁP 5.8.2| goto<nhãn>; VÍ DỤ 5.8.3| #include "iostream" using namespace std; void main() { int n; // input

A1:cout << "nhap so nguyen n: "; cin >> n;

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 91 { goto A1; } cout << endl; system("pause"); } Kết quả:

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 92 Tóm tắt:  Các cấu trúc vịng lặp sẵn có trong C++: - Vịng lặp for. - Vòng lặp while. - Vòng lặp do … while.

 Trong C, vòng lặp for cho phép sự thực thi các câu lệnh được lặp lại với số

lần lặp có thể x|c định được

 Khi x|c định được số lần lặp có thể sử dụng while, do while, for, khi chưa x|c định số lần lặp chỉ có thể sử dụng while, do while

 Tất cả bài tốn viết được bằng for đều có thể viết được bằng while, do while, điều ngược lại không đúng

 While kiểm tra điều kiện trước khi thực hiện khối lệnh, do đó có thể khơng thực hiện lặp lần nào, do while thực hiện khối lệnh một lần trước khi kiểm tra điều kiện nên khối lệnh được thực hiện ít nhất một lần

 Lệnh break cho phép nhanh chóng thốt khỏi một vịng lặp đơn hoặc một

vòng lặp lồng nhau. Câu lệnh continue bắt đầu lần lặp kế tiếp của vịng lặp.  Trong C++có bốn lệnh thực hiện sự rẽ nh|nh không điều kiện: return, goto,

break, và continue.

Câu hỏi và bài t p:

1. Trình b{y cú ph|p, lưu đồ, ý nghĩa c|c cấu trúc điều khiển đ~ học 2. So sánh cấu trúc lặp for, while, do while

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 93

6. HÀM

Chương n{y nhằm giúp sinh viên các kiến thức để có thể :

- Trình bày và thực hiện được cách sử dụng các hàm có sẵn.

- Trình b{y được cấu trúc của 1 hàm, cách xây dựng hàm.

- Trình bày và thực hiện được cách khai báo hàm, nguyên mẫu hàm, cách gọi hàm.

- Có thể ph}n tích chương trình th{nh nhiều phần nhỏ hơn để xây dựng hàm

- Phân biệt được các dạng tham số

- Trình b{y được phạm vi giá trị của biến, biết vận dụng trong bài thực hành

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 94

6.1| KHÁI NIỆM KHÁI NIỆM

6.1.1|

Trong những chương trình lớn, có thể có những đoạn chương trình viết lặp đi lặp lại nhiều lần, để tr|nh rườm rà và mất thời gian khi viết chương trình, người ta thường ph}n chia chương trình th{nh nhiều module, mỗi module giải quyết một cơng việc n{o đó. C|c module như vậy gọi l{ c|c chương trình con. Một tiện lợi khác của việc sử dụng chương trình con l{ ta có thể dễ dàng kiểm tra x|c định tính đúng đắn của nó trước khi ráp nối v{o chương trình chính v{ do đó việc x|c định sai sót để tiến hành hiệu đính trong chương trình chính sẽ thuận lợi hơn.

Trong C++ chương trình con được gọi là hàm. Hàm trong C++ có thể trả về kết quả thơng qua tên hàm hay có thể khơng trả về kết quả.

Hàm có hai loại: hàm chuẩn và hàm tự định nghĩa. Trong chương n{y, ta chú trọng đến c|ch định nghĩa h{m v{ c|ch sử dụng c|c h{m đó.

Một h{m khi được định nghĩa thì có thể sử dụng bất cứ đ}u trong chương trình. Trong C++ một chương trình bắt đầu thực thi bằng hàm main.

CÁC HÀM THƯ VIỆN THÔNG DỤNG

6.1.2|

H{m thư viện là những h{m đ~ được định nghĩa sẵn trong một thư viện n{o đó muốn sử dụng c|c h{m thư viện thì phải khai b|o thư viện trước khi sử dụng bằng lệnh

#include <Tên tập tin> ở phần đầu của chương trình

1) cmath: Tập tin định nghĩa c|c h{m tính to|n gồm các hàm abs(), sqrt(),log(),

sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(),…

2) cstring: Tập tin định nghĩa c|c h{m liên quan đến việc xử lý chuỗi 3) iomanip: Định nghĩa nhiều phép điều chỉnh

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 95

6.2| HÀM DO NGƯỜI DÙNG ĐỊNH NGHĨA

H{m người dùng là những h{m do người lập trình tự tạo ra nhằm đ|p ứng nhu cầu xử lý của mình.

ĐỊNH NGHĨA HÀM

6.2.1|

Cấu trúc của một h{m do người dùng xây dựng:

<kiểu kết quả>Tên hàm ([<kiểu tham số><tham số, […]])

{

[Khai báo biến cục bộ]; [các câu lệnh xử lý];

[return [<kết quả>];]

}

- Kiểu kết quả: là kiểu dữ liệu của kết quả trả về, có thể là : int, byte, char, float,void… Một hàm có thể có hoặc khơng có kết quả trả về. Trong trường hợp

hàm khơngcó kết quả trả về ta sử dụng kiểu kết quả là void. - Kiểu tham số: là kiểu dữ liệu của tham số.

- Tham số: là tham số đầu vào cho hàm, một hàm có thể có hoặc khơng có tham

số. Tham số này g i là tham số hình thức, khi g i hàm chúng ta phải truyền

cho nó các tham số thực tế. Nếu có nhiều tham số, mỗi tham số phân cách nhau dấu phẩy “,”.

- Bên trong thân hàm là các khai báo cùng các câu lệnh xử lý. Các khai báo bên trong h{m được gọi là các khai báo cục bộ trong hàm và các khai báo này chỉ tồn tại bên trong hàm mà thôi.

- Khi kết thúc h{m, ta thường sử dụng câu lệnh return để trả về kết quả thông qua tên hàm.

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 96 Lệnh return dùng để thốt khỏi một hàm và có thể trả về một giá trị n{o đó.

Cú pháp:

return ; /*không trả về giá trị*/

return<biểu thức>; /*Trả về giá trị của biểu thức*/

Nếu hàm có kết quả trả về, ta bắt bu c phải sử dụng câu lệnh return để trả về kết quả cho hàm. Ví dụ: hàm nhập 1 số nguyên int nhapSoNguyen() { int kq; printf("nhap so nguyen: "); scanf("%d", &kq); return kq; } SỬ DỤNG HÀM 6.2.2|

Một h{m khi định nghĩa thì chúng vẫn chưa được thực thi trừ khi ta có một lời gọi đến h{m đó.

Cách thực hiện

• Gọi tên của hàm đồng thời truyền các đối số (hằng, biến, biểu thức) cho các tham số đúng thứ tự đ~ được khai báo trong hàm.

• Các biến hoặc trị này cách nhau bằng dấu ,

• Các đối số này được được đặt trong cặp dấu ngoặc đơn ( ) Cú pháp gọi hàm:

<Tên hàm>([Danh sách các tham số]);

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 97 #include "iostream" using namespace std; //prototype int nhapSoNguyen(); void veLine(int x); //ham main void main() { int n; //nhap so nguyen n n = nhapSoNguyen();

//in dau * ra man hinh

cout << "in " << n << " ngoi sao\n"; veLine(n);

cout << endl; system("pause"); }

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 98

HÀM KHÔNG CĨ THAM SỐ VÀ KHƠNG CĨ KIỂU TRẢ VỀ

6.2.3|

Trong ví dụ trên hàm int NhapSoNguyen() là hàm khơng có tham số, khi gọi hàm int a = NhapSoNguyen(); ta không truyền tham số thực tế cho hàm. Đ}y l{ loại hàm khơng có giá trị đầu vào.

Hàm void HoanVi(int&x, int&y) là hàm khơng có trị trả về khi đó khai b|o kiểu trả về là void, ta có thể gọi h{m như 1 c}u lệnh trong C++ Hàm có thể có hoặc khơng có tham số.

NGUYÊN TẮT HOẠT ĐỘNG CỦA HÀM:

6.2.4|

Trong chương trình, khi gặp một lời gọi hàm thì hàm bắt đầu thực hiện bằng cách chuyển các lệnh thi h{nh đến h{m được gọi. Q trình diễn ra như sau: - Nếu hàm có tham số, trước tiên các tham số sẽ được gán giá trị thực tương ứng.

- Chương trình sẽ thực hiện tiếp các câu lệnh trong thân hàm bắt đầu từ lệnh đầu tiên đến câu lệnh cuối cùng.

- Khi gặp lệnh return hoặc dấu ”}” cuối cùng trong th}n h{m, chương trình sẽ thốt khỏi h{m để trở về chương trình gọi nó và thực hiện tiếp tục những câu lệnh của chương trình n{y.

6.3| TRUYỀN THAM SỐ CHO HÀM THAM TRỊ: THAM TRỊ: 6.3.1| Ví dụ: #include "iostream" using namespace std; //prototype int nhapSoNguyen();

void hoanVi(int x, int y);

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 99

void main()

{

int nSo1, nSo2;

// nhap 2 so nguyen

nSo1 = nhapSoNguyen(); nSo2 = nhapSoNguyen();

//hoan vi gia tri 2 biến

cout << "so nguyen da nhap : " << nSo1 << " , " << nSo2;

hoanVi(nSo1, nSo2);

cout << "\n so nguyen sau khi hoan vi " << nSo1 << " , " << nSo2;

cout << endl; system("pause"); }

//dinh nghia ham //ham nhap so nguyen

int nhapSoNguyen()

{

int kq;

cout << "nhap so nguyen: "; cin >> kq;

return kq;

}

//ham hoan vi gia tri 2 bien x, y

void hoanVi(int x, int y)

{

int tam = x;

Tài liệu giảng dạy Kỹ thuật lập trình 1 Trang 100

y = tam;

}

Kết quả:

Trong hàm HoanVi ở trên, biến x, y là tham số hình thức được truyền bằng giá trị (gọi là tham trị của hàm). Các tham trị của h{m coi như l{ một biến cục bộ trong h{m v{ chúng được sử dụng như l{ dữ liệu đầu vào của hàm.

- Khi chương trình con được gọi để thi hành, tham trị được cấp ô nhớ và nhận giá trị là bản sao giá trị của tham số thực. Do đó, mặc dù tham trị cũng l{ biến, nhưng việc thay đổi giá trị của chúng bên trong hàm không ảnh hưởng đến giá trị của chúng bên ngồi hàm, khơng ảnh hưởng đến chương trình chính, nghĩa là không làm ảnh hưởng đến tham số thực tương ứng

Một phần của tài liệu Kỹ thuật lập trình 1 Bậc cao đẳng (Trang 84)

Tải bản đầy đủ (PDF)

(126 trang)