Vòng lặp while và do while

Một phần của tài liệu Giáo trình lập trình hướng đối tượng (nghề lập trình viên máy tính cao đẳng) (Trang 33 - 40)

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

5.3.Vòng lặp while và do while

Có một tình huống mà bạn cần phải thực hiện một đoạn code một vài lần. Nhìn chung, các câu lệnh được thực hiện một cách tuần tự. Câu lệnh đầu tiên của hàm được thực hiện trước, sau đó đến câu thứ 2 và tiếp tục.

Ngôn ngữ lập trình cung cấp cho chúng ta nhiều cấu trúc điều khiển và cho phép bạn thực hiện những phần phức tạp.

Vòng lặp cho phép thực hiện một lệnh và một nhóm lệnh nhiều lần , dưới đây là dạng tổng quát:

Vòng lặp Miêu tả

Vòng lặp while trong C++ Lặp lại một hoặc một nhóm các lệnh trong khi điều kiện đã cho là đúng. Nó kiểm tra điều kiện trước khi thực hiện thân vòng lặp.

Vòng lặp do...while trong C++

Giống lệnh While, ngoại trừ ở điểm là nó kiểm tra điều kiện ở cuối thân vòng lặp.

Lồng vòng lặp trong C++ Bạn có thể sử dụng một hoặc nhiều vòng lặp trong các vòng lặp while, for hoặc do..while khác.

Các lệnh điều khiển vòng lặp trong C++

Các lệnh điều khiển vòng lặp thay đổi sự thực thi lệnh từ dãy thông thường của nó. Khi sự thực thi lệnh rời khỏi một phạm vi, tất cả các đối tượng tự động mà được tạo ra trong phạm vi đó bị hủy.

C++ hỗ trợ các lệnh điều khiển vòng lặp sau đây.Click vào các đường link sau để biết thêm chi tiết.

Lệnh điều khiển Miêu tả

Lệnh break trong C++ Kết thúcvòng lặp hoặc lệnhswitch và chuyển

sang thực thi vòng lặp hoặc lệnh switch ngay sau nó.

Lệnh continue trong C++ Khi gặp lệnh này thì chương trình sẽ bỏ qua các câu lệnh ở dưới nó (trong cùng một câu lệnh lặp) để thực hiện vòng lặp mới.

Lệnh goto trong C++ Chuyển tới lệnh được gán. Mặc dù vậy, nó được khuyên rằng không nên sử dụng lệnh goto trong chương trình của bạn.

5.4.Vòng lặp for

Vòng lặp for là một cấu trúc lặp được sử dụng nhiều nhất trong ngôn ngữ C++, nó hoàn

toàn có thể thay thế cho vòng lặpwhile. Lập trình viên thường sử dụng vòng

lặpfor khibiết trước số lần lặp của vòng lặp. Cú phápcủa vòng lặp for:

for(init-statement;condition-expression;end-expression)

{

statements;

}

5.5.Các lệnh làm thay đổi cấu trúc lập trình 5.6.Phạm vi biến

Biến cục bộ trong C++

Các biến được khai báo bên trong một hàm hoặc khối là các biến cục bộ (local).Chúng chỉ có thể được sử dụng bởi các lệnh bên trong hàm hoặc khối code đó.Các biến cục bộ không được biết ở bên ngoài hàm đó (tức là chỉ được sử dụng bên trong hàm hoặc khối code đó). Dưới đây là ví dụ sử dụng các biến cục bộ:

#include<iostream> usingnamespace std; int main ()

{

// phan khai bao bien cuc bo: int a, b;

int c; (adsbygoogle = window.adsbygoogle || []).push({});

// phan khoi tao bien a =10;

c = a + b; cout<< c; return0; }

6.Mảng một chiều

6.1.Khai báo và khởi tạo mảng

Khai báo mảng trong C/C++

Để khai báo một mảng trong ngôn ngữ C/C++, bạn xác định kiểu của biến và số lượng các phần tử được yêu cầu bởi biến đó như sau:

KieuTen_mang[Kich_co_mang];

Đây là mảng một chiều.Kich_co_mang phải là một số nguyên lớn hơn 0 vàKieu phải

hợp lệ trong ngôn ngữ C/C++. Ví dụ, khai báo một mảng 10 phần tử gọi là balance với kiểu double, sử dụng câu lệnh sau đây:

char sinhvien[10];

6.2.Một số thao tác với mảng một chiều

Khởi tạo mảng trong C/C++

Bạn có thể khởi tạo mảng trong C/C++ hoặc từng phần tử một hoặc sử dụng một câu lệnh như dưới đây:

int hanghoa[5]={45,34,29,67,49};

Số lượng các giá trị trong dấu ngoặc kép {} không được lớn hơn số lượng phần tử khai báo trong dấu ngoặc vuông [].

Nếu bạn bỏ sót kích cỡ mảng thì mảng đó đủ lớn để giữ các giá trị được khởi tạo: Bạn sẽ tạo chính xác một chuỗi có giá trị giống hệt chuỗi bên trên bằng cách gán từng phần tử một. Dưới đây là một ví dụ khi gán giá trị cho một phần tử của mảng:

int hanghoa[]={45,34,29,67,49};

Bạn có thể tạo ra cùng một mảng giống như đã làm trong ví dụ trước. hanghoa[4]=50;

Câu lệnh bên trên gán giá trị thứ 5 của mảng giá trị 50.0.Tất cả các mảng đều có chỉ số (index) đầu tiên bằng 0, đây được gọi là chỉ số cơ bản và phần tử cuối cùng của mảng có chỉ số bằng độ lớn của mảng trừ đi 1. Dưới đây là cách biểu diễn hình họa cho chuỗi khai báo bên trên thông qua chỉ số:

Truy cập các phần tử mảng trong C/C++

Một mảng được truy cập bởi cách đánh chỉ số trong tên của mảng. Dưới đây là một cách truy cập một giá trị của mảng:

int hocphi= hocphik60[55];

Câu lệnh trên lấy phần tử thứ 56 của mảng và gán giá trị này cho biến hocphi. Dưới đây là một ví dụ về việc sử dụng với tất cả mô tả bên trên:

#include<iostream> usingnamespace std;

#include<iomanip> using std::setw; int main() {

int n[10];// n la mot mang gom 10 so nguyen // khoi tao gia tri cac phan tu cua mang n la 0 for(int i=0; i<10; i++)

{

n[ i]= i+100;// thiet lap phan tu tai vi tri i la i + 100 }

cout<<"Phan tu thu:"<< setw(13)<<"Gia tri la:"<< endl; // hien thi gia tri cua moi phan tu

for(int j=0; j<10; j++) { (adsbygoogle = window.adsbygoogle || []).push({});

cout<< setw(7)<< j<< setw(13)<< n[ j]<< endl; }

return0; }

Bài tập thực hành

1. Viết chương trình C++ giải phương trình bậc 2: ax2

+ bx + c = 0.

2. Viết chương trình C++ tìm ước số chung lớn nhất (UCLN) và bội số chung nhỏ nhất (BCNN) của hai số a và b.

3. Viết chương trình C++ liệt kê tất cả các số nguyên tố nhỏ hơn n. 4. Viết chương trình C++ liệt kê n số nguyên tố đầu tiên.

5. Viết chương trình C++ liệt kê tất cả các số nguyên tố có 5 chữ số.

6. Viết chương trình C++ phân tích số nguyên n thành các thừa số nguyên tố. Ví dụ: 12 = 2 x 2 x 3.

7. Viết chương trình C++ tính tổng các chữ số của một số nguyên n. Ví dụ: 1234 = 1 + 2 + 3 + 4 = 10.

8. Viết chương trình C++ tìm các số thuận nghịch có 6 chữ số. Một số được gọi là số thuận nghịch nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Ví dụ 123321 là một số thuận nghịch.

9. Nhập số tự nhiên n. Hãy liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố. 10. Dãy số Fibonacci được định nghĩa như sau: F0 = 0, F1 = 1, F2 = 1, Fn = F(n-1) +

F(n-2) với n >= 2. Ví dụ: 0, 1, 1, 2, 3, 5, 8, ... Hãy viết chương trình tìm số Fibonacci thứ n.

BÀI 3: ĐÓNG GÓI VÀ XÂY DỰNG LỚP, TẠO VÀ SỬ DỤNG Mã bài: MĐLTV 21.03

Giới thiệu

Data encapsulation là một kỹ thuật đóng gói dữ liệu, và các hàm mà sử dụng chúng

và trừu tượng hóa dữ liệu là một kỹ thuật chỉ trưng bày tới các Interface và ẩn Implementation Detail (chi tiết trình triển khai) tới người sử dụng.C++ hỗ trợ các thuộc tính của đóng gói và ẩn dữ liệu thông qua việc tạo các kiểu tự định nghĩa (user- defined), gọi là classes. Chúng ta đã học rằng một lớp có thể chứa các thành viên private, protected vàpublic. Theo mặc định, tất cả thành phần được định nghĩa

trong một lớp là private

Mục tiêu

Hiểu và biết cách xây dựng lớp; tạo và sử dụng đối tượng thể hiện các kỹ thuật trừu tượng hóa dữ liệu; đóng gói và che giấu thông tin.

Nội dung

1.Trừu tượng hóa dữ liệu

1.1.Trừu tượng hóa dữ liệu là gì? 1.2.Trừu tượng hóa dữ liệu là gì?

Trừu tượng hóa dữ liệu (Data abstraction) liên quan tới việc chỉ cung cấp

thông tin cần thiết tới bên ngoài và ẩn chi tiết cơ sở của chúng, ví dụ: để biểu diễn thông tin cần thiết trong chương trình mà không hiển thị chi tiết về chúng.

Trừu tượng hóa dữ liệu (Data abstraction) là một kỹ thuật lập trình mà dựa trên sự phân biệt của Interface và Implementation (trình triển khai).

Xem xét ví dụ về một chiếc TV, bạn có thể bật/tắt, thay đổi kênh, chỉnh âm lượng, và thêm các thiết bị ngoại vi như loa, VCR và DVD. Nhưng bạn không biết các chi tiết nội vi của nó, đó là, bạn không biết cách nó nhận tín hiệu qua không khí hoặc qua dây cáp, cách phiên dịch chúng và cuối cùng là hiển thị chúng trên màn hình.

Vì thế, có thể nói rằng một chiếc TV phân biệt rõ ràng trình triển khai nội vi của nó với giao diện ngoại vi và bạn có thể thao tác với interface với các nút nguồn, điều khiển âm lượng mà không cần có bất kỳ hiểu biết về những gì diễn ra bên trong nó.

Bây giờ, về mặt ngôn ngữ lập trình C++, thì các lớp C++ cung cấp Trừu tượng hóa dữ liệu (Data abstraction) ở mức thật tuyệt vời. Chúng cung cấp đủ các phương thức public tới bên ngoài để thao tác với tính năng của đối tượng và để thao tác dữ liệu đối tượng, ví dụ: trạng thái mà không cần thực sự biết về cách lớp đó đã được triển khai nội tại.

Ví dụ, chương trình của bạn có thể tạo một lời gọi tới hàmsort() mà không cần biết (adsbygoogle = window.adsbygoogle || []).push({});

về hàm đó thực sự sử dụng thuật toán gì để sắp xếp các giá trị đã cho. Thực ra, trình triển khai cơ sở (underlying implementation) của tính năng sắp xếp có thể thay đổi tùy vào thư viện, và miễn là Interface vẫn như cũ thì lời gọi hàm của bạn vẫn tiếp tục làm việc.

Trong C++, chúng ta sử dụng cácLớp để định nghĩa kiểu dữ liệu trừu tượng

(abstract data types (ADT)) của riêng chúng ta. Bạn có thể sử dụng đối tượng cout của lớpostream cho luồng dữ liệu tới đầu ra chuẩn như sau:

3 4 5

int main( ) {

cout << "Hello C++" <<endl; return 0;

}

1.3.So sánh đối tượng và lớp

Object

Trong C++, Đối tượng (Object) là một thực thể trong thế giới thực, ví dụ, ghế, xe hơi, bút, điện thoại, máy tính xách tay, v.v.

Nói cách khác, đối tượng là một thực thể có trạng thái và hành vi. Ở đây, trạng thái có nghĩa là dữ liệu và hành vi có nghĩa là chức năng.

Đối tượng là một thể hiện của một lớp.Tất cả các thành viên của lớp có thể được truy cập thông qua đối tượng.

Ví dụ sau tạo đối tượng của lớp Student bằng cách sử dụng s1 làm biến tham chiếu. Student s1; // lệnh tạo đối tượng sinh viên trong ví dụ này Student là kiểu và s1 là biến tham chiếu đến cá thể của lớp student

Class

Trong C++, Lớp (class) là một nhóm các đối tượng tương tự. Nó là một khuôn mẫu mà từ đó các đối tượng được tạo ra. Nó có thể có các trường, phương thức, constructor, ... Hãy xem một ví dụ về lớp C++ chỉ có ba trường.

classStudent { public:

intid; // truong hoac thanh vien du lieu floatsalary; // truong hoac thanh vien du lieu String name; // truong hoac thanh vien du lieu }

Ví dụ lớp và đối tượng trong C++

#include <iostream> usingnamespacestd; classStudent { public: intid; string name; }; intmain() {

Student s1; // tao doi tuong Student s1.id = 10001;

s1.name = "Vinh Tran"; cout << s1.id << endl; cout << s1.name << endl; return0;

} Kết quả: 10001 Vinh Tran

Một phần của tài liệu Giáo trình lập trình hướng đối tượng (nghề lập trình viên máy tính cao đẳng) (Trang 33 - 40)