1. Trang chủ
  2. » Giáo án - Bài giảng

Giáo án - Bài giảng: BÀI GIẢNG MÔN CƠ SỞ LẬP TRÌNH (C++)

227 4K 6
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Giới Thiệu Ngôn Ngữ C++
Người hướng dẫn ThS.GVC Tô Oai Hùng
Trường học Đại Học Mở TP.HCM
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài giảng
Thành phố TP.HCM
Định dạng
Số trang 227
Dung lượng 2,18 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Một trong những ngôn ngữ lập trình được sử dụng là C++.. Những kiến thức về lập trình được sử dụng trong hầu hết các môn học của ngành Công Nghệ Thông Tin sau này.. Biết cách tạo giải th

Trang 1

- Lý thuyết: 2 tín chỉ

- Thực hành: 2 tín chỉ

Trang 2

Mục Đích, Yêu Cầu Môn Học

cách lập trình trên máy tính Một trong những ngôn ngữ lập trình được sử dụng là C++ Đây là môn học được xem

là nền tảng trong lập trình Những kiến thức về lập trình được sử dụng trong hầu hết các môn học của ngành Công Nghệ Thông Tin sau này.

trình được những bài toán cơ bản về tính toán Biết cách tạo giải thuật, chuyển thành chương trình từ bài toán

cụ thể và sử dụng thành thạo ngôn ngữ C++ trong lập trình cấu trúc.

Trang 3

Tài Liệu Học Tập

Introduction to Computing, Prentice

Hall 2002, Third Edition.

Program, Prentice Hall, New Jersey,

2003, Fourth Edition.

Professional C++, Wiley Publishing,

2005.

Trang 4

Chương 1

Trang 7

chương trình nhằm điều khiển máy tính làm việc.

Trang 8

chương trình nguồn thành chương

trình nguồn.

Trang 9

Chương Trình C++

// h01_01.cpp // Chương trình đầu tiên trong C++

#include <iostream.h>

int main() {

cout << "Welcome to C++!\n";

return 0; // cho biết chương trình

// kết thúc thành công }

Chú thích

Chỉ dẫn biên dịch

Phần chính của chương trình chứa các lệnh C++

Trang 10

Chương Trình C++

int main() {

cout << "Welcome to C++!\n"; return 0;

}

Xuất chuỗi thông báo

Trả trị 0 cho hệ điều hành - cho biết

chương trình kết thúc thành công

Trang 11

ThS.GVC Tô Oai Hùng 11

Các Bước Giải Quyết Bài Toán

Các bước trong phát triển phần mềm gồm:

Trang 12

Vấn Đề

Trang 14

tượng phần mềm nào chưa được khai báo, thêm các lệnh khai báo để chỉ định kiểu và tên cho đối tượng đó.

Trang 15

Viết Mã C++

/* h01_02.cpp: Tính trọng lượng quả cầu.

Nhập: Bán kinh (foot) và tỷ trọng (pound/cubic foot) quả cầu

Xuất: Trọng lượng quả cầu (pound) */

#include <iostream.h> // cin , cout,

// << , >>

#include <math.h> // pow() int main() // hàm main() rỗng {

return 0;

}

Trang 16

<< weight << " pound.\n";

return 0;

}

Trang 17

Kiểm Tra, Thực Thi,

Trang 18

Kiểm Tra, Thực Thi,

Phát Hiện Lỗi

(lỗi thời gian thực thi).

Trang 19

Lỗi Cú Pháp

double radius

thông báo lỗi để người lập trình xác định vị trí và sửa lại chương trình nguồn.

Trang 20

Lỗi Thời Gian Thực Thi

chương trình thực thi.

dừng.

bất kỳ lỗi nào xảy ra.

Trang 21

Lỗi Logic

thi nhưng cho kết quả không đúng.

bằng tay rồi so sánh với kết quả của chương trình.

phức tạp của chương trình càng tăng:

lỗi logic.

Trang 22

Bảo Trì

thường chỉ chạy vài lần.

Trang 23

Xuất: Trọng lượng quả cầu (pound và tấn)

*/

#include <iostream.h>

#include <math.h>

int main() {

const double PI = 3.14159;

Trang 24

cout <<"\n Trọng lượng quả cầu xấp xỉ "

<< weight << " pound, hay "

<< weight /2000.0 << " tấn.\n"; return 0;

}

Trang 25

Kiểm Tra Lại

Trang 26

Bài Tập Tại Lớp

Thành lập mỗi nhóm gồm hai người

Trang 27

Vấn Đề

nối cáp (đồng trục) máy tính cho các phòng làm việc:

Trang 28

Giải Thuật và Viết Mã Lệnh

thiết để mô tả giải thuật của vấn đề đã cho.

chương trình.

Trang 29

Kiểm Tra, Thực Thi,

Trang 30

Chương 2

Trang 31

Mục Tiêu

Trang 32

Vấn Đề

vụ sau:

mỗi giờ.

Trang 33

Thực Hiện

Mã số: 3323 Lương = $259.875

Trang 34

Giải Thuật

pay = hours * HOURLY_WAGE

Trang 35

Viết Mã, Thực Thi và Kiểm Tra

mã lệnh

tượng chưa được khai báo.

Trang 36

Các Kiểu Dữ Liệu Cơ Bản

- int

- short , long , unsigned .

- float , double , long double .

- char .

sai):

- int / unsigned hay

Trang 37

ThS.GVC Tô Oai Hùng 8

từ nhớ của phần cứng:

trong chương trình sẽ khác nhau trên các máy tính khác nhau.

- Từ -32768 đến 32767 .

Trang 38

gấp đôi.

- unsigned int (kích thước phụ

thuộc vào máy tính).

- unsigned short (16 bit): Từ 0 đến

65535 .

- unsigned long (32 bit): Từ 0 đến

4294967295 .

Trang 40

ThS.GVC Tô Oai Hùng 11

58 10 = 0000000000111010 2

unsigned thì tất cả 16 bit được dùng

Trang 41

Biểu Diễn Số Nguyên

diễn trong máy tính theo dạng bù hai

-58 10 = 1111111111000110 2

Trang 42

ThS.GVC Tô Oai Hùng 13

0000000000000000 2 = 0 10

0000000000000001 2 = 1 10

0111111111111111 2 = 32767 10

1000000000000000 2 = -32768 10

1000000000000001 2 = -32767 10

1111111111111111 2 = -1 10

Các giá trị dương

Các giá trị âm

Trang 43

Số Nguyên Không Dấu

trị dương biểu diễn được tăng gấp đôi

0000000000000000 2 = 0 10

0000000000000001 2 = 1 10

0000000000000010 2 = 2 10

1111111111111110 2 = 65534 10

1111111111111111 2 = 65535 10

Trang 44

So Sánh int với unsigned

unsigned .

Trang 45

Số Thực

- float : Là một giá trị 32 bit (4 byte).

- double : Là một giá trị 64 bit (8 byte).

- long double : Là một giá trị 80 bit

Trang 47

diễn theo dạng dấu chấm động gồm:

+ 1.23 . 10 – 4

Trang 48

Biểu Diễn Số Thực

chuẩn hoá theo chuẩn IEEE để biểu diễn chúng theo một cách duy nhất.

Trang 49

Biểu Diễn Số Thực

có dạng:

số mũ (8 bit)

dấu

(1 bit) Phần định trị (Các bit bên phải - 23 bit

dấu chấm nhị phân của phần định trị)

Trang 51

Biểu Diễn Số Thực

có dạng:

dấu (1 bit)

số mũ (11 bit)

Phần định trị - 52 bit (Các bit bên phải dấu chấm nhị phân của

phần định trị)

Trang 53

Ký Tự

biệt:

bằng giá trị nguyên một byte.

đơn.

- Ví dụ: 'X', '7', '>', 'e'

Trang 54

Ký Tự

Trang 56

So Sánh Kiểu Ký Tự và Chuỗi

phân trong máy tính

Trang 57

So Sánh Kiểu Ký Tự và Chuỗi

Trang 58

Kiểu Luận Lý

unsigned được dùng làm kiểu luận lý

unsigned thì chỉ có hai giá trị: đúng và sai .

Trang 59

ThS.GVC Tô Oai Hùng 30

Danh Hiệu

mềm như tên biến, hằng, hàm, …

Đề nghị

Trang 60

Danh Hiệu

- Ví dụ, firstName là danh hiệu khác

Trang 61

ThS.GVC Tô Oai Hùng 32

Các Loại Đối Tượng

Trang 62

tên biến.

trình mà giá trị của nó có thể thay đổi.

Trang 63

double GPA = 3.25, credits;

char letterGrade = ‘A’;

int ok,

done = 0; // false

Trang 64

hours rate ?

37.5

hours

Trang 66

Hằng Tượng Trưng

trị của nó không đổi:

const double HOURLY_WAGE = 6.75;

- const là từ khoá.

- double là kiểu dữ liệu.

- HOURLY_WAGE là tên hằng (nên viết

Trang 69

Chương 4

CẤU TRÚC LỰA CHỌN

Trang 70

Mục Tiêu

hiện sự lựa chọn trong nhiều khả năng.

thiết kế các mạch logic máy tính.

Trang 71

Các Cấu Trúc Điều Khiển

dưới ba dạng cấu trúc điều khiển:

if, if-else, switch

for, while, do-while

Trang 73

Giải Thuật

nhập vào ba số nguyên.

Trang 74

Viết Mã, Thực Thi và Kiểm Tra

main() rỗng.

mã lệnh:

Trang 77

Lưu Ý

max = x;

if(max < y) ;

max = y;

quả sai.

Trang 80

Viết Mã, Thực Thi và Kiểm Tra

Trang 81

Cú Pháp và Lưu Đồ

y Lệnh if-else : if(boolean_exp) statement 1

else statement 2

y Nếu boolean_exp là true thì statement 1 được thực hiện Ngược

Trang 82

Lệnh if-else Lồng Nhau

if(boolean_exp 1 )

statement 1 else

if(boolean_exp 2 ) statement 2

else if …

Trang 84

Lệnh if-else Lồng Nhau

Trang 85

Sự Kết Hợp Của else Với if

if(x >= 0) if(y >= 0)

z = sqrt (x) + sqrt(y);

else cerr << "Không tính được!!!";

được kết hợp

Trong lệnh if-else lồng nhau, mỗi

phần else sẽ được kết hợp với mỗi

phần if gần nhất trước đó chưa

được kết hợp

Trang 86

Nhầm Lẫn Giữa = và ==

1 true và false trong C++:

true .

Trang 87

Nhầm Lẫn Giữa = và ==

Trang 88

Biểu Thức Điều Kiện

condition ? exp 1 : exp 2

Trang 91

Giải Thuật

result .

vào result .

-

Trang 92

So Sánh switch Với if-else

switch thay cho if-else .

Trang 93

Viết Mã, Thực Thi và Kiểm Tra

Trang 94

Các từ khoá

Biểu thức int hay char

Biểu thức int hay char

Mỗi case_list là một hay

được kết thúc bằng lệnh break hay return

Trang 95

Lưu Đồ Của Lệnh switch

Trang 96

Hành Vi

ConstantValue i thì điều khiển sẽ

nhảy đến statement_list i sau ConstantValue i

switch cho đến khi:

- lệnh break được thực thi, hay

Chú ý sự sử dụng lệnh

Trang 97

Hành Vi

4 Nếu expression không so trùng

statement_list n+1 trong mệnh đề default được thực hiện Nếu

biểu thức nguyên.

Trang 98

ThS.GVC Tô Oai Hùng 30

Lưu Ý

của switch là một giá trị hợp lệ nhưng

không có hành động nào xảy ra cho giá trị đó

Trang 99

Khi Nào Dùng Lệnh switch

if-else lồng nhau khi:

hiện.

Trang 100

ThS.GVC Tô Oai Hùng 32

học kỳ (thang điểm 100) dựa vào ba loại điểm:

tính hạng của sinh viên Biết rằng, nếu:

Trang 101

Để xếp hạng của sinh viên : Nhập điểm bài làm ở nhà: 80

Nhập điểm kiểm tra giữa kỳ: 80

Nhập điểm thi cuối kỳ: 80

Điểm trung bình cuối kỳ = 80, hạng = B

Thực hiện

Trang 102

vào các biến homework , test , và exam .

final =

HOMEWORK_WEIGHT * homework + TEST_WEIGHT * test +

EXAM_WEIGHT * exam

final .

Trang 103

Viết Mã, Thực Thi và Kiểm Tra

10.

Trang 104

Biểu Thức Logic và

trong sự phát minh máy tính, đó là các mạch số Giả sử cần thiết kế mạch cộng bán phần dựa trên 3 loại cổng logic sau:

Trang 106

Biểu Thức Logic và

- Số nhớ C = 1 khi digit1 và digit2 là 1 .

- Khi C = 1 thì tổng S = 0 .

HOẶC của digit1 và digit2 .

y Vậy:

C = digit1 && digit2

S = !C && (digit1 || digit2)

Trang 107

Biểu Thức Logic và

cộng bán phần (half adder circuit).

Trang 108

Chương 3

Trang 111

Giải Thuật

dụng nhập khối lượng.

vào biến mass.

Trang 112

Viết Mã, Thực Thi và Kiểm Tra

y Figure 3.1 Xem mã nguồn

y Sample run Ví dụ thực thi, dữ liệu thử bao gồm:

Trang 113

Biểu Thức

toán tử được kết hợp nhau để tạo ra

một giá trị được gọi là biểu thức.

double energy = mass * SPEED_OF_

LIGHT * SPEED_OF_LIGHT;

Trang 115

Phép Chia

double sẽ cho kết quả khác nhau Ví dụ:

hiện.

Trang 116

của phép chia:

Trang 117

Độ Ưu Tiên Của Toán Tử

Trang 118

Độ Ưu Tiên Của Toán Tử

* , / , % + , -

Trang 119

C++ là kết hợp trái.

Trang 120

Chuyển Đổi Kiểu Dữ Liệu

số thực trong cùng biểu thức Ví dụ:

2 + 3.0 → 5.0

thành những giá trị rộng hơn, được gọi

là chuyển đổi kiểu ngầm định:

thực.

Trang 121

Chuyển Đổi Kiểu Dữ Liệu

trị từ một kiểu đến kiểu khác.

type (expression)

hay (type) expression

liệu Ví dụ:

double x = 3.456;

cout << (int) x;

Giá trị 3 hiển thị?

Trang 122

Biểu Thức Luận Lý

unsigned , nó có hai giá trị đúng hay sai

Trang 123

Các Phép Toán Quan Hệ

x < 5.2

b * b >= 4.0 * a * c number == 500

‘a’ < ‘b’

Trang 124

Biểu Thức Luận Lý Kết Hợp

Trang 125

Biểu Thức Luận Lý Kết Hợp

thể được xây dựng bằng cách sử dụng các toán tử luận lý:

a && b // true iff cả hai a và b là true

a || b // true iff a hay b là true

!a // true iff a là false

cin >> score;

assert(0 <= score && score <= 100);

Trang 126

Cách Tính Tắt

(n != 0) && (x < 1.0 / n)

không xảy ra.

Trang 127

Tiền Điều Kiện

của nó bị ràng buộc trong điều kiện nào đó:

Trang 128

Cơ Chế assert()

#include <iostream.h>

#include <assert.h>

int main() {

Trang 130

Biểu Thức Gán

khi thực thi lệnh gán.

Trang 131

( 0 ).

Trang 132

var = var Δ value;

var Δ= value;

Trang 134

Phép Toán Tăng Và Giảm

Trang 135

Phép Toán Tăng Trước

cho giá trị toán hạng của nó được tăng

Trang 136

Phép Toán Tăng Sau

khi giá trị đó được sử dụng trong biểu thức:

Trang 137

Phép Toán Tăng Trước Và Sau

sử dụng trong câu lệnh riêng biệt:

int y = 0, x = 0;

++x; // x = 1 y++; // y = 1

trong phép toán tăng (hay giảm) là như nhau.

Trang 138

Chuyển Biểu Thức Thành Câu Lệnh

sau sẽ trở thành câu lệnh:

x = y + z;

'A';

cos(z); Các câu lệnh

Trang 139

Luồng Nhập - Xuất

nhập/xuất trong ngôn ngữ:

istream và ostream

Trang 140

kiểu của biến Vậy, nên xuất thông báo cho người sử dụng biết trước khi nhập

Ví dụ:

cout << “Nhập số thực: “;

double x;

cin >> x;

Trang 141

Biểu Thức Xuất

output_stream << expression;

cout << "The sum = " << sum;

hay sự kết hợp của chúng bằng toán tử:

cout << "Sum = " << v1 + v2 + v3;

Trang 142

Định Dạng Xuất

y ios::showpoint : Hiển thị dấu chấm

thập phân và phần lẻ (kể cả 0) đối với

số thực Mặc định là không hiển thị phần lẻ nếu nó là không.

y ios::fixed : Sử dụng ký pháp dấu

chấm cố định cho các giá trị thực.

y ios::scientific : Sử dụng ký pháp

khoa học cho các giá trị thực.

y ios::left (hay ios::right ): Hiển thị

giá trị được canh trái (hay canh phải – mặc định) trong một trường.

y setprecision(p) : Hiển thị p số lẻ cho

tất cả giá trị thực ở những lần xuất sau

#include <iostream.h>

#include <iomanip.h>

Trang 143

Bài Tập Tại Lớp

Vấn đề:

phối hàng hoá Mỗi chuyến đi, tài xế ghi lại số dặm đã vận chuyển, số gallon nhiên liệu đã sử dụng, giá tiền mỗi gallon, và chi phí vận hành cho mỗi dặm.

dặm đi được cho mỗi gallon nhiên liệu, tổng chi phí vận chuyển, chi phí vận chuyển cho mỗi dặm trong mỗi chuyến đi.

các số liệu này.

Trang 144

Thực Hiện

Ghi nhận số liệu:

Số dặm đã vận chuyển: 99

Số gallon nhiêu liệu đã dùng: 99.99

Giá tiền mỗi gallon: 99.99

Trang 145

Giải Thuật

gallonsOfFuel, unitFuelCost và unitOperatingCost .

Trang 147

Viết Mã, Thực Thi Và Kiểm Tra

y Figure 3.2 : Xem mã nguồn.

Trang 148

Chương 6

HÀM (Phần 1)

Trang 150

y Viết chương trình chuyển đổi nhiệt độ

từ thang nhiệt Fahrenheit thành Celsius Biết:

Trang 151

y Nhắc người sử dụng nhập nhiệt độ Fahrenheit.

Trang 152

y Xem mã nguồn, Figure 6.1

Trang 153

y Sự định nghĩa hàm (thay vì viết mã lệnh

từ Fahrenheit thành Celsius làm cho các hàm hay các chương trình khác có thể tái sử dụng nó.

trong chương trình sử dụng các mã lệnh này.

Trang 154

y Hình 6.2 xuất cùng kết quả với Hình 6.1

4

5 6

7 8

Trang 155

y Định nghĩa hàm:

return_type name

(parameter-Declarations) {

statementList }

Trang 156

const double PI = 3.14159;

double area(double length,

double width) {

double halfLength = length/2.0,

halfWidth = width/2.0;

return PI * halfLength *

halfWidth;

} double circumference(double

length, double width) {

Trang 157

double halfLength = length/2.0,

halfWidth = width/2.0;

return 2.0 * PI * sqrt((pow(halfLength, 2.0) +

pow(halfWidth, 2.0))/2.0);

}

Trang 158

y Dùng để khai báo hàm:

trước bất kỳ lời gọi nào hay định nghĩa hàm

hàm đó.

return_type

name(parameter-Declarations);

Trang 159

cout << “ Tính diện tích và chu vi

của Ellipse\n“

<< “ Nhập chiều dài và rộng: “;

double length, width;

cin >> length >> width;

Trang 161

y Lời gọi hàm bao gồm tên hàm và những giá trị mà hàm bị gọi cần đến, được gọi là đối số.

double tempCelsius = fahrToCelsius(tempFahrenheit);

Trang 162

y Các bước để thiết kế chương trình có thể được sử dụng để thiết kế hàm:

Hành vi của hàm gồm:

Nhận các giá trị từ hàm gọi Trả về giá trị cho hàm gọi

Trang 163

y Là các biến của hàm bị gọi mà hàm gọi

có thể chỉ định giá trị cho nó.

dấu ngoặc đơn trong phần định nghĩa hàm.

double fahrToCelsius(double

tempFahr) {

return (tempFahr - 32.0) / 1.8;

}

Trang 164

y Khi một hàm được gọi:

được gọi là đối số.

double tempCelsius = fahrToCelsius(212)

double fahrToCelsius(double tempFahr){

return (tempFahr - 32.0) / 1.8;

trị tham số của nó

212

Trang 166

y Đặc tả hàm: Xác định phần đầu của hàm gồm:

Trang 167

y Để kiểm tra hàm cần phải có chương trình điều khiển:

Trang 168

y Chương trình ví dụ của chúng ta chỉ

các biến bên trong nó gọi là biến cục bộ:

thoát khỏi hàm (hay khối) chứa nó.

int maximum(int x, int y, int z) {

int max = x;

if(y > max ) max = y;

if(z > max ) max = z;

return max ; }

Trang 169

y Tham số cũng được xem là biến cục bộ.

bộ và tham số có cùng tên là lỗi cú pháp

Trang 170

y Được tạo ra bằng cách đặt khai báo biến bên ngoài tất cả định nghĩa hàm

#include <iostream.h>

int x = 1;// x là biến toàn cục

int main() {

//

}

trong suốt thời gian thực thi chương trình.

Trang 171

y Nhiều chương trình có các tác vụ thường được lặp lại:

Trang 172

y Cần phân biệt lời gọi hàm trả trị với lời gọi hàm không trả trị.

double tempCelsius = fahrToCelsius(tempFahrenheit);

printAsMoney(payment-purchase);

Trang 173

y Các hàm toán học trong tập tin

<math.h>

ceil(x) ceil(9.2) là 10.0

ceil (–9.8) là –9.0 cos(x) cos(0.0) là 1.0

cos(1.570796) là 0.0 exp(x) exp(1.0) là 2.71828

exp(2.0) là 7.38906 fabs(x) fabs(5.1) là 5.1

fabs(0.0) là 0.0 fabs(–8.76) là 8.76

Trang 174

floor(x) floor(9.2) là 9.0

floor(–9.8) là –10.0

fmod(x, y) fmod(13.657, 2.333)

là 1.992 log(x) log(2.718282) là 1.0

log(7.389056) là 2.0 log10(x) log10(10.0) là 1.0

log10(100.0) là 2.0 pow(x, y) pow(2, 7) là 128

pow(9, 5) là 3

Trang 175

sin(x) sin(0.0) là 0

sin(1.570796) là 1.0

sqrt(x) sqrt(900.0) là 30.0

sqrt(9.0) là 3.0 tan(x) tan(0.0) là 0

tan(0.785398) là 1.0

Trang 176

y Các hàm xử lý ký tự trong <ctype.h>

int isdigit(int c) : Trả về true

int isalpha(int c) : Trả về true

Trang 177

int isupper(int c) : Trả về true

Trang 178

Thành lập mỗi nhóm gồm hai người

Trang 179

y Định nghĩa một hàm gồm chức năng sau:

các thao tác cộng, trừ, nhân, chia,

Trang 180

Chương 7

HÀM (Phần 2)

Trang 181

y Mở rộng giới thiệu hàm trong chương 6

inline

y Hàm template

Trang 182

y Xét phép chia nguyên:

mỗi hàm chỉ có thể trả về chỉ một giá trị.

được gọi là tham trị (value parameter),

nó là bản sao của các đối số của nó.

hàm bị gọi, chính là thay đổi giá trị của bản sao chứ không phải đối số thực của nó.

Trang 183

y Tham số tham chiếu:

- Dấu & được đặt sau kiểu của tham số nhưng trước tên của nó.

(alias) cho đối số tương ứng của nó.

chiếu sẽ thay đổi giá trị của đối số tương ứng của nó

Ngày đăng: 16/04/2014, 15:33

TỪ KHÓA LIÊN QUAN

w