Tải bản đầy đủ (.ppt) (41 trang)

thuc hanh c phan 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 (113.06 KB, 41 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

CHƯƠNG 2:

NHỮNG VẤN ĐỀ



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=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



</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=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 bởi dấu “;”


• #include: u cầu chương trình dịch
chèn thêm file vào mã nguồn.


• using namespace


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

2. Biến



Phải khai báo biến trước khi sử dụng



Có thể khai báo biến ở mọi nơi trong chương



trình



Tên biến



Phân biệt chữ hoa, chữ thường



Sử dụng các ký tự từ a-z, 0-9 và dấu “_”



Ví dụ:



int var1;



</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

Kiểu dữ liệu đơn giản



Kiểu nguyên:

int

,

long

,

short



Kiểu ký tự:

char

– lưu mã ASCII của ký tự




Ký tự nằm trong 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



</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

Kiểu dữ liệu đơn giản …



<b>Type</b>

<b>Low</b>

<b>High</b>

<b>Bytes</b>



char

-128

127

1



short

-32768

32767

2



int

-2147483648

2147483647

4



long

-2147483648

2147483647

4



float

3.4x10

-38

3.4x10

38

4



double

1.7x10

-308

1.7x10

308

8



long


double




</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

Ép kiểu



C++ là ngơn ngữ định kiểu mạnh ().



 Ví dụ:


 double pi=3.14; // đúng
 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 = 8 cho y, khơng phải là 8.5


 Thực hiện phép tốn trên 2 tốn hạng có kiểu khác nhau thì tốn


hạng có kiểu thấp hơn sẽ tự động bị ép về kiểu cao hơn.


Tự ép kiểu



 Ví dụ:


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

Biến hằng

(Constant Variables)




Giá trị của hằng không thay đổi.



Có 2 cách khai báo hằng:



const float PI=3.14;



#define PI 3.14



</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

Sử dụng

cout



cout

là một đối tượng được định nghĩa trước trong C++, tương



ứng với luồng ra chuẩn (

standard output stream

).



Toán tử << là 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) là 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 trong



iomanip

)



</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

Sử dụng

cin




cin

là toán tử được định nghĩa trước trong 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;



</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

Header File và Library File



Một số nhiệm vụ được thực hiện bởi Library Function.


Header File chứa khai báo các hàm mà ta cần sử



dụng trong 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 hiện tại.



Nếu khơng include Header File thích hợp thì chương




</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=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



</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

3. Toán tử



Toán tử toán học



Toán tử quan hệ




</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

Toán tử toán học



+, -, *, /, %



 Ví dụ:


 int i = 1/3; // kết quả i = 0


 float x = 1.0/3; // kết quả x=0.3333
 int j = 7 % 3; // kết quả 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;


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

Toán tử quan hệ



So sánh 2 giá trị.




Kết quả trả về là true hoặc false



>, <, ==, !=, >=, <=



Ví dụ:



int x=44;


int y=12;



</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

Toán tử logic



 logical and : &&


 (x >= 5) && ( x <= 15) // true nếu x nằm trong [5,15]


 logical or : ||


 (x == 5) || ( x == 10) // true nếu x=5 hoặc x=10


 logical negation : !


 ! (x == 5) // true nếu x khác 5
 Tương tự x != 5


 Toán tử điều kiện (conditional operator) : ? … :


 <b><condition> ? <true expression> : < false expression></b>
 Ví dụ:



 min = (alpha<beta) ? alpha : beta;
 Tương tự


if (alpha < beta)


min = alpha;
else


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

4. Các câu lệnh



Vòng lặp



Rẽ nhánh



</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=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 trong các phần của vòng for
( ; ; ); các biểu thức đó cách nhau bởi dấu phẩy.


• Ví dụ:


for(int j=0, float alpha=100.0; j<50; j++, alpha--)
{


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

Vòng lặp for ...



int i;



for (i=1; i<=15; i++) // thân vịng lặp for có 1 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 của trường hiển thị bằng n


int cube = i*i*i;



</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

Vòng lặp while




•Vịng lặp while được sử dụng khi khơng biết trước số lần lặp.


•Lặp cho đến khi biểu thức kiểm tra vẫn có giá trị True.



•Ví dụ:



char c=’n’;
while ( c != ’y’)
{


cout << ”Do you want to continue: (y/n)” << endl;
cin >> c;


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

Vòng lặp while ...



test expression



while ( c != ’y’ )


{




}



body of loop


test



expression

exit



true




</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

Vòng lặp do



• Trong vịng lặp do, biểu thức kiểm tra được đánh


giá ở cuối vịng lặp.



•Thân vịng lặp được thực hiện ít nhất một lần.


•Ví dụ:



char c;
do


{


cout << ”Do you want to continue: (y/n)” << endl;
cin >> c;


}


</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

Vòng lặp do ...



body of loop



test expression



do


{ … }



while ( c != ’y’ );



test




expression

exit



true



</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

If … Else



• Phụ thuộc vào điều kiện kiểm tra là true hay false


để quyết đị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


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

If … Else



test expression



if ( x > 100)


{





}


else


{





}

body of if



test



expression



exit



true



false



</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

Lệnh switch



• Lệnh switch được sử dụng khi có nhiều nhánh rẽ


phụ thuộc vào giá trị của cùng một biến.



switch(<variable>)
{


case <constant1>:


break;



case <constant2>:


break;
default :


</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=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:


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

Lệnh switch ...



variable


equals


const 1



exit


true



false



first case body



variable


equals


const 2



true



false



</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

Một số lệnh điều khiển khác



break: thốt khỏi vịng lặp hoặc switch




continue: trở lại đầu vòng lặp.



</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

5. Structure



 Structure là một tập hợp các biến đơn giản, tương tự như record trong 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 các thành phần của Structure:


part part1={6244, 373, 217.55};


 Truy cập vào các thành phần của Structure


part1.modelnumber = 6244;
part.modelnumber = 6244; //sai


 Hai biến cùng kiểu structure có thể gán cho nhau


</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

Structure lồng




Thành phần của Structure có thể là một structure



khác.



struct Distance struct Room


{ {


int feet; Distance length;
float inches; Distance width;


}; };


Truy cập vào các thành phần của Structure lồng



Room dining;


dining.length.feet=13;


Khởi tạo Structure lồng:



</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=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ị của các biến kiểu enum là những giá trị mà enum đã



định nghĩa trước.



Các giá trị của enum được lưu dưới dạng số nguyên,



bắt đầu từ 0.



Ta có thể thay đổi giá trị nguyên của giá trị đầu trong enum



enum days_of_week {Sun=1, Mon, Tue, Wed, Thu, Fri, Sat};
days_of_enum day=Mon;


</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>

6. Hàm



 Khai báo hàm xác định tên hàm, kiểu trả về, và các tham số cần thiết trong lời


gọi hàm.


 Khai báo hàm thường nằm trong Header File (.h)


 Định nghĩa hàm chứa thân hàm.


 Định nghĩa hàm thường nằm trong 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;


</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34>

Truyền trị

(Passing by Value)



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.



Giá trị của biến được truyền khơng thay đổi.



Ví dụ:



void f(int val)


{



val++;


}




int x=4;


f(x);



</div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=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 thì biến cục bộ là bí



danh của biến được truyền.



Địa chỉ của biến được truyền cho hàm.



Hàm có thể truy cập trực tiếp trên biến được truyền.


Ví dụ:



void swap (int & a, int& b)
{


int tmp;
tmp = a;
a = b;
b = tmp;
}


int x=3; int y=5;


</div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36>

Tham số hằng



Tham chiếu hằng không cho phép hàm




thay đổi giá trị của biến được truyền.



Ví dụ:



void f( int& a, const int& b ) // b là tham số hằng


{



</div>
<span class='text_page_counter'>(37)</span><div class='page_container' data-page=37>

Chồng hàm

(Overloaded Function)



Hàm chồng thực hiện các nhiệm vụ khác nhau phụ



thuộc vào các 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ự


{



</div>
<span class='text_page_counter'>(38)</span><div class='page_container' data-page=38>

Inline Fuction


main()
….
….
Function1()

….
….
Function1()
….
….
Function1()
….
….
….
….
Function1()
main()
….
….
….
….
….
….
….
….
….
….


</div>
<span class='text_page_counter'>(39)</span><div class='page_container' data-page=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


</div>
<span class='text_page_counter'>(40)</span><div class='page_container' data-page=40>

Phạm vi của biến



Một khối lệnh (block) nằm trong dấu { … }



Phạm vi của biến là khối lệnh mà biến được



khai báo



Biến được khai báo ở ngoài hàm là biến toàn



cục (global variable).



Khai báo biến ở block trong sẽ ẩn khai báo



</div>
<span class='text_page_counter'>(41)</span><div class='page_container' data-page=41>

Phạm vi của 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 của j và i ở trong


cout << i; // hiển thị 3



</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×