1. Trang chủ
  2. » Luận Văn - Báo Cáo

thuc hanh c phan 2

41 12 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 294,5 KB

Nội dung

 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

w