Khi truyền trị, hàm sẽ tạo ra một biến cục bộ. để lưu giá trị của biến được truyền.[r]
(1)CHƯƠNG 2: NHỮNG VẤN ĐỀ
(2)Nội dung chính
Cấu trúc chương trình
Biến
Tốn tử
Các câu lệnh
Structure
(3)1 Cấu trúc chương trình
Xét ví dụ sau:
#include <iostream.h> using namespace std; int main()
{
cout << “Hello world \n”; return 0;
}
• Hàm
• Câu lệnh: kết thúc dấu “;”
• #include: yêu cầu chương trình dịch chèn thêm file vào mã nguồn
• using namespace
(4)2 Biến
Phải khai báo biến trước sử dụng
Có thể khai báo biến nơi chương
trình
Tên biến
Phân biệt chữ hoa, chữ thường
Sử dụng ký tự từ a-z, 0-9 dấu “_”
Ví dụ:
int var1;
(5)Kiểu liệu đơn giản
Kiểu nguyên: int, long, short
Kiểu ký tự: char – lưu mã ASCII ký tự
Ký tự nằm dấu ‘’ Ví dụ: ‘a’ Ký tự đặc biệt: \n, \tab, \\, \’, \”, …
Kiểu không dấu: unsigned char, unsigned int,
unsigned short, unsigned long
Kiểu dấu phẩy động: float, double, long
double
(6)Kiểu liệu đơn giản …
Type Low High Bytes
char -128 127 1
short -32768 32767 2
int -2147483648 2147483647 4
long -2147483648 2147483647 4
float 3.4x10-38 3.4x1038 4
double 1.7x10-308 1.7x10308 8
long double
(7)Ép kiểu
C++ ngôn ngữ định kiểu mạnh ().
Ví dụ:
double pi=3.14; // double x=”Hello”; // sai
Ép kiểu tự động
Ví dụ:
int i = 17;
float x = i; // gán 17 cho x int j = 2;
float y = i/j; // gán 17/2 = cho y, khơng phải 8.5
Thực phép tốn tốn hạng có kiểu khác tốn
hạng có kiểu thấp tự động bị ép kiểu cao
Tự ép kiểu
Ví dụ:
(8)Biến (Constant Variables)
Giá trị không thay đổi.
Có cách khai báo hằng:
const float PI=3.14;
#define PI 3.14
(9)Sử dụng cout
cout đối tượng định nghĩa trước C++, tương
ứng với luồng chuẩn (standard output stream).
Toán tử << toán tử chèn, định hướng nội dung cần hiển thị. Ví dụ:
string str=”Hello world”; int i=8;
cout << str << endl; // endl (hoặc \n) dấu hiệu xuống dòng cout << ”i=” << i << endl;
Để định dạng nội dung hiển thị, sử dụng setw (nằm
iomanip)
(10)Sử dụng cin
cin toán tử định nghĩa trước C+
+, tương ứng với luồng vào chuẩn (standard
input stream).
Toán tử >> đưa nội dung từ luồng vào chuẩn
vào biến.
Ví dụ:
int temperature;
(11)Header File Library File
Một số nhiệm vụ thực Library Function. Header File chứa khai báo hàm mà ta cần sử
dụng chương trình.
Ví dụ:
#include <math.h> #include ”myprog.h”
<>: yêu cầu chương trình dịch tìm từ thư mục chuẩn. ” ” : yêu cầu chương trình dịch tìm từ thư mục tại.
Nếu khơng include Header File thích hợp chương
(12)myprog.cpp somelib.h myprog.h
#include <somelib.h> #include ”myprog.h”
myprog.obj
myprog.exe
cs.lib
user header file
compiler
linker
library header file
library file object file
(13)3 Toán tử
Toán tử toán học
Toán tử quan hệ
(14)Toán tử toán học
+, -, *, /, %
Ví dụ:
int i = 1/3; // kết i =
float x = 1.0/3; // kết x=0.3333 int j = % 3; // kết j=1
++,
Ví dụ:
int i=3; int j=7;
cout << 10 * i++; // hiển thị 30, sau i=4 cout << 10 * ++j; // hiển thị 80, sau j=8
+=, -=, *=, /=
Ví dụ:
float x=6.0;
(15)Toán tử quan hệ
So sánh giá trị.
Kết trả true false
>, <, ==, !=, >=, <=
Ví dụ:
int x=44; int y=12;
(16)Toán tử logic
logical and : &&
(x >= 5) && ( x <= 15) // true x nằm [5,15]
logical or : ||
(x == 5) || ( x == 10) // true x=5 x=10
logical negation : !
! (x == 5) // true x khác Tương tự x !=
Toán tử điều kiện (conditional operator) : ? … :
<condition> ? <true expression> : < false expression> Ví dụ:
= (alpha<beta) ? alpha : beta; Tương tự
if (alpha < beta)
min = alpha; else
(17)4 Các câu lệnh
Vòng lặp
Rẽ nhánh
(18)Vòng lặp for
increment expression test expression
initialization expression
for ( i=0; i<15; i++ )
initialization expression
body of loop increment expression test expression exit true false
• Có thể đặt nhiều biểu thức phần vòng for ( ; ; ); biểu thức cách dấu phẩy
• Ví dụ:
for(int j=0, float alpha=100.0; j<50; j++, alpha ) {
(19)Vòng lặp for
int i;
for (i=1; i<=15; i++) // thân vịng lặp for có lệnh cout << i*i << ” ”;
cout << endl;
for (i=1; i<=15; i++) // thân vịng lặp for có nhiều lệnh {
cout << setw(4) << i << ” ”;
// setw(n) gán kích thước trường hiển thị n int cube = i*i*i;
(20)Vịng lặp while
•Vịng lặp while sử dụng trước số lần lặp. •Lặp biểu thức kiểm tra có giá trị True.
•Ví dụ:
char c=’n’; while ( c != ’y’) {
cout << ”Do you want to continue: (y/n)” << endl; cin >> c;
(21)Vòng lặp while
test expression
while ( c != ’y’ ) {
… }
body of loop test
expression exit
true
(22)Vòng lặp do
• Trong vịng lặp do, biểu thức kiểm tra đánh giá cuối vịng lặp.
•Thân vịng lặp thực lần. •Ví dụ:
char c;
{
cout << ”Do you want to continue: (y/n)” << endl; cin >> c;
}
(23)Vòng lặp
body of loop
test expression
do { … }
while ( c != ’y’ );
test
expression exit
true
(24)If … Else
• Phụ thuộc vào điều kiện kiểm tra true hay false để định nhánh thực hiện
• Ví dụ:
int x;
cout << ”Enter a number: ”; cin >> x;
if ( x > 100)
cout << x << ” is greater than 100” << endl; else
(25)If … Else
test expression
if ( x > 100) {
… } else {
…
} body of if
test
expression
exit
true
false
(26)Lệnh switch
• Lệnh switch sử dụng có nhiều nhánh rẽ phụ thuộc vào giá trị biến.
switch(<variable>) {
case <constant1>: …
break;
case <constant2>: …
break; default : …
(27)Lệnh switch
char c;
cout << ”Enter your choice (a/b/c) : ”; cin >> c;
switch (c) {
case ’a’:
cout << ”You picked a!” << endl; break;
case ’b’:
cout << ”You picked b!” << endl; break;
case ’c’:
cout << ”You picked c!” << endl; break;
default:
(28)Lệnh switch
variable equals const 1
exit true
false
first case body
variable equals const 2
true
false
(29)Một số lệnh điều khiển khác
break: khỏi vịng lặp switch
continue: trở lại đầu vòng lặp.
(30)5 Structure
Structure tập hợp biến đơn giản, tương tự record Pascal Khai báo Structure:
struct part { int modelnumber; int partnumber; float cost; };
Định nghĩa biến kiểu Structure:
part part1;
Khởi tạo thành phần Structure:
part part1={6244, 373, 217.55};
Truy cập vào thành phần Structure
part1.modelnumber = 6244; part.modelnumber = 6244; //sai
Hai biến kiểu structure gán cho
(31)Structure lồng
Thành phần Structure structure
khác.
struct Distance struct Room
{ {
int feet; Distance length; float inches; Distance width;
}; };
Truy cập vào thành phần Structure lồng
Room dining;
dining.length.feet=13;
Khởi tạo Structure lồng:
(32)Enumeration
Định nghĩa enum:
enum days_of_week {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
Khai báo biến kiểu enum
days_of_week day1, day2;
Giá trị biến kiểu enum giá trị mà enum
định nghĩa trước.
Các giá trị enum lưu dạng số nguyên,
bắt đầu từ 0.
Ta thay đổi giá trị nguyên giá trị đầu enum
enum days_of_week {Sun=1, Mon, Tue, Wed, Thu, Fri, Sat}; days_of_enum day=Mon;
(33)6 Hàm
Khai báo hàm xác định tên hàm, kiểu trả về, tham số cần thiết lời
gọi hàm
Khai báo hàm thường nằm Header File (.h)
Định nghĩa hàm chứa thân hàm
Định nghĩa hàm thường nằm source file (.cpp)
Ví dụ
int fac(int n); // function declaration int fac(int n) // function definition
{
int result=1;
for (int i=1; i<=n; i++) result*=i; return result;
}
int x=7;
(34)Truyền trị (Passing by Value)
Khi truyền trị, hàm tạo biến cục
để lưu giá trị biến truyền
Giá trị biến truyền không thay đổi.
Ví dụ:
void f(int val) {
val++; }
int x=4; f(x);
(35)Truyền tham chiếu (Passing by Reference)
Tham chiếu cung cấp bí danh (alias) cho biến.
Khi truyền tham số theo kiểu tham chiếu biến cục bí
danh biến truyền.
Địa biến truyền cho hàm.
Hàm truy cập trực tiếp biến truyền. Ví dụ:
void swap (int & a, int& b) {
int tmp; tmp = a; a = b; b = tmp; }
int x=3; int y=5;
(36)Tham số hằng
Tham chiếu không cho phép hàm
thay đổi giá trị biến truyền.
Ví dụ:
void f( int& a, const int& b ) // b tham số hằng {
(37)Chồng hàm (Overloaded Function)
Hàm chồng thực nhiệm vụ khác phụ
thuộc vào tham số truyền.
Ví dụ:
void print(int a) // in số nguyên {
cout << ”integer : ” << a; }
void print(string s) // in xâu ký tự {
(38)Inline Fuction main() … … Function1() … … Function1() … … Function1() … … … … Function1() main() … … … … … … … … … …
(39)Hàm có tham số mặc định
#include <math.h>
double logn (double x, double base=10) // mặc định gán base = 10 {
return log(x)/log(base); }
double y=5.6;
cout << ”log(y) = ” << logn(y) << endl; // sử dụng giá trị mặc định cout << ”ln(y) = ” << logn(y,2.71828) << endl; // base = e
(40)Phạm vi biến
Một khối lệnh (block) nằm dấu { … }
Phạm vi biến khối lệnh mà biến
khai báo
Biến khai báo hàm biến toàn
cục (global variable).
Khai báo biến block ẩn khai báo
(41)Phạm vi biến …
int x; // global variable int main()
{
int i=3; // local variable {
int j=5; // local variable
int i=7; // local i ẩn biến i ngoài cout << i; // hiển thị 7
} // kết thúc phạm vi j i trong cout << i; // hiển thị 3