thuc hanh c phan 2

41 12 0
thuc hanh c phan 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

 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

Ngày đăng: 30/04/2021, 01:38

Tài liệu cùng người dùng

Tài liệu liên quan