1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cơ bản về lập trình: Máy tính, phần mềm và thiết kế chương trình

160 110 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 160
Dung lượng 1,36 MB

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

Nội dung

Bài giảng Cơ bản về lập trình: Máy tính, phần mềm và thiết kế chương trình được biên soạn nhằm cung cấp cho các bạn những kiến thức về tổ chức máy tính; CPU; đơn vị điều khiển; bộ nhớ; thiết bị nhập xuất; màn hình; phần mềm; phần mềm ứng dụng; hệ điều hành và một số kiến thức khác.

Trang 1

Cơ bản về lập trình

Máy tính, phần mềm và thiết kế chương trình

JPC and JWD © 2002 McGraw-Hill, Inc.

Trang 2

Tổ chức máy tính

CPU - central processing unit

 Là nơi thi hành các tính toán, xử lý

Bộ nhớ (Memory)

 Lưu trữ dữ liệu đang được xử lý bởi CPU

Thiết bị nhập (Input devices)

 Cho phép người sử dụng cung cấp thông tin cho máy tínhThiết bị xuất (Output devices)

 Cho phép người dùng nhận thông tin từ máy tính

Trang 3

Tổ chức máy tính

Memory

CPU

InputDevices

OutputDevices

Trang 4

Bộ não của máy tính

 Thi hành các thao tác số học bởi Arithmetic/Logical Unit hoặc ALU

 Đơn vị điều khiển định vị và thi hành các chỉ thị lệnhCác thao tác số học được thi hành sử dụng hệ số nhị phân

Trang 5

Đơn vị điều khiển

Chu kỳ fetch/execute thi hành một chỉ thị

Thực hiện hành động được chỉ ra bởi chỉ thị được gọi là

thi hành chỉ thị

The program counter (PC) (bộ đếm chương trình) lưu trữ địa chỉ của chỉ thị kế tiếp

Fetch the instruction towhich the PC points

Increment the PC

Execute the fetched

instruction

Trang 6

Bộ nhớ

Còn gọi là bộ nhớ chính (main memory)Nơi chứa dữ liệu để chạy chương trình

 Dữ liệu chứa trong bộ nhớ chính có thể chia làm 2 phần:

 Dữ liệu thật sự: do người dùng nhập vào, do việc tính toán

 Đoạn mã của chương trình

Bộ nhớ = tập hợp các ô nhớ, mỗi ô nhớ 1 byte Mỗi ô nhớ có một vị trí để định vị hay còn gọi là địa chỉ

Trang 7

Là các thiết bị bổ trợ cho phép máy tính thực hiện một số tác vụ

cụ thể nào đó:

 Nhận thông tin để xử lý

 Trả về kết quả của việc xử lý

 Lưu thông tinCác thiết bị nhập xuất thông dụng

Một vài thiết bị vừa đóng vai trò nhập vừa đóng vai trò xuất

Thiết bị nhập xuất

Trang 8

Màn hình

Thiết bị hiển thị hoạt động như ti vi

 CRT (cathode ray tube)Điều khiển bởi một thiết bị xuất gọi là card đồ họa (graphics card)

Vùng hiển thị được

 Độ phân giải

 Màu sắc

1280 pixels across screen

1024 pixels down screen

Trang 9

 Hệ điều hành (Operating systems)

 Hệ thống chuyển (Translation systems)

Phần mềm

Trang 10

Phần mềm ứng dụng giúp máy tính trở nên không thể thiếu và phổ biến

Trang 11

Ví dụ

 Windows®, UNIX®, Mac OS X®

Điều khiển và quản lý các tài nguyên

Những dịch vụ quan trọng mà hệ điều hành cung cấp

 Hệ thống file

 Directories, folders, files

 Các lệnh thao tác trên hệ thống file

 Sort, delete, copy

 Khả năng thi hành thao tác nhập xuất trên nhiều loại thiết bị khác nhau

 Quản lý việc chạy các chương trình

Hệ điều hành

Trang 12

Hệ thống chuyển

Một tập các chương trình để phát triển các chương trình khácHạt nhân là một thành phần gọi là trình chuyển đổi (translator)Một số loại trình chuyển đổi

 Visual C++ 6.0, DevC++, Borland C++

 Thi hành việc biên dịch, liên kết, và một số thao tác khác

Trang 13

Các họat động lập trình

Viết mã chương trìnhBiên dịch

Liên kết với các file đã được biên dịch khác

 Object files

 Library modulesTải vào bộ nhớ và thi hànhQuan sát sự họat động của chương trình

Trang 14

Các họat động lập trình

CompileLink

Trang 16

Kỹ nghệ phần mềm

Kỹ nghệ phần mềm

 Lĩnh vực của khoa học máy tính liên quan đến xây dựng các

hệ thống phần mềm lớnThách thức

 Phần cứng phát triển rất nhanh trong khi phần mềm phát triển không tương xứng

Trang 18

Sự tin cậy (Reliability)Tính dễ hiểu

 Sự chỉnh sửa phát triển thêm trong tương lai sẽ rất khó khăn nếu phần mềm khó hiểu

Hiệu quả về mặt chi phíTính thích nghi

 Hệ thống có tính thích nghi là hệ thống dễ dàng sửa chữa và mở rộng

Tính tái sử dụng

 Cải thiện độ tin cậy, tính dễ bảo trì và tăng lợi nhuận

Mục đích của kỹ nghệ phần mềm

Trang 19

Sự trừu tượng (Abstraction)

 Lấy ra những thuộc tính cần thiết và bỏ qua những thuộc tính không cần thiết

Sự đóng gói (Encapsulation)

 Che giấu và bảo vệ những thông tin nhạy cảm thông quan một giao diện

Tính module hóa (modularity)

 Chia một đối tuợng thành các module nhỏ hơn để có dễ hiểu

và thao tác hơnTính hệ thống cấp bậc (hierarchy)

 Sắp xếp các đối tượng dựa trên quan hệ giữa chúng

Các nguyên lý kỹ nghệ phần mềm

Trang 20

Thiết kế và lập trình hướng đối tượng

Phương pháp thiết kế và lập trình hướng đối tượng hỗ trợ một

kỹ nghệ phần mềm tốt

 Xúc tiến suy nghĩ theo cách mà chúng ta vẫn thường nghĩ

và tương tác với thế giới thực

Ví dụ: xem ti vi

 Remote là một đối tượng vật lý với thuộc tính

 Trọng lượng, kích cỡ

 Có thể gởi thông điệp đến cho ti vi

 Ti vi cũng là một đối tượng với nhiều thuộc tính

Trang 21

Đối tượng

Một đối tượng hầu như là mọi thứ với các đặc trưng

 Có tên

 Có các thuộc tính

 Có khả năng phản ứng lại các thông điệp nhận được

 Một số thông điệp cơ bản

 Thi hành một hành động

 Yêu cầu thay đổi một thuộc tính

Trang 22

Lập trình C++ căn bản

JPC and JWD © 2002 McGraw-Hill, Inc.

Trang 23

// Program: Display greetings // Author(s): Ima Programmer // Date: 1/24/2001

#include <iostream>

int main() { std::cout << "Hello world!" <<

Trang 24

// Program: Display greetings // Author(s): Ima Programmer // Date: 1/24/2001

#include <iostream.h>

int main() { cout << "Hello world!" << endl;

Trang 25

// Program: Display greetings // Author(s): Ima Programmer // Date: 1/24/2001

#include <iostream>

#include <string>

using namespace std;

int main() { cout << "Hello world!" << endl;

Trang 26

Greeting Output

Trang 27

Khai báoĐọc dữ liệu

Khai báo có khởI tạo

Area.cpp

#include <iostream>

using namespace std;

int main() {

// Extract length and width

cout << "Rectangle dimensions: ";

float Length;

float Width;

cin >> Length >> Width;

// Compute and insert the area

float Area = Length * Width;

cout << "Area = " << Area << " = Length "

<< Length << " * Width " << Width << endl;

return 0;

}

Trang 28

Visual C++ IDE with Area.cpp

Trang 29

Area.cpp Output

Trang 30

Chú thích

Cho phép đưa các ghi chú vào trong chương trình

Tầm quan trọng

 Viết ít lần nhưng đọc nhiều lần

 Chương trình phảI dễ hiểu để có thể dễ dàng bảo trì và nâng cấp

C++ có hai dạng chú thích

 // chú thích 1 dòng (nên dùng)

 /* chú thích nhiều dòng */ (dùng khi debug)

Các chú thích thường có

 Mô tả chương trình và tác giả

 Ghi nhận các thay đổI của chương trình

Trang 31

Các đối tượng cơ bản của C++

C++ cung cấp nhiều kiểu đối tượng đựơc nạp sẵn (built-in) Các kiểu đối tượng cơ bản được chia làm 4 loại chính:

 Đối tượng số nguyên

Trang 32

Kiểu đối tượng số nguyên

Kiểu số nguyên cơ bản là int

 Kích thước của số nguyên phụ thuộc vào phần cứng và trình biên dịch

 Thường là 16 bits = 2 bytes (hoặc 32 bits = 4 bytes)Các kiểu số nguyên khác:

short: kích thước ít hơn số nguyên (1 byte)

long: kích thước nhiều hơn số nguyên (4 bytes)

Nhiều kiểu số nguyên cho phép lập trình viên sử dụng bộ nhớ hiệu quả

Các phép toán: +, -, *, /, %, >, <, ==, >=, <=

Trang 33

Kiểu đối tượng kí tự

Kiểu kí tự liên quan mật thiết với kiểu số nguyênCác kí tự được mã hóa bằng một mô hình tương ứng mỗi kí tự với một số nguyên duy nhất

Bảng mã ASCII

 Ví dụ:

' ' tương ứng 32 '+' tương ứng 43

'A' tương ứng 65 'Z' tương ứng 90

'a' tương ứng 97 'z' tương ứng 122

Trang 35

\t là mã dấu Tab \n là mã dấu xuống dòng

\\ là mã dấu \ \' là mã dấu nháy đơn

\" là mã dấu nháy kép

Ví dụ: '\t' là kí tự Tab, '\n‘ là kí tự xuống dòng

Trang 36

Hằng chuỗi kí tự

Một chuỗI kí tự hợp lệ là một dãy các kí tự được bao bọc bởI dấu nháy kép Chuỗi không có kí tự được gọI là chuỗi rỗng

“Day la chuoi ki tu"

“Chuoi nay se xuong dong\n"

""

Là chuỗi kí tự dạng cũ do C cung cấp, C++ cung cấp kiểu đối

tượng chuỗi là string

Trang 37

Kiểu đối tượng số thực

C++ cung cấp ba kiểu số thực

float

double

long double

Trang 38

Các hằng số thực

Phần nguyên và phần thực ngăn cách bởi dấu chấm (.)

134.1230.15

Mặc định của các hằng số thực là kiểu double

Trang 39

Kiểu lôgic

Là kiểu thể hiện giá trị đúng sai

Có hai giá trị: true hoặc falseCác phép toán:

 &&  phép AND (và)

 ||  phép OR (hoặc)

 !  phép NOT (phủ định)

Trang 40

Kiểu tên-biến;

Kiểu tên-biến1, tên-biến2, ;

Trang 41

Các tên

Một tên hợp lệ là một dãy của các

 Chữ (hoa và thường)

 Số

 Một tên không được bắt đầu bởi số

 Dấu nối dưới

 Không nên bắt đầu bằng dấu nối dướiCác tên có phân biệt chữ hoa và chữ thường

 Bien1 khác với BIEN1

Có hai loại tên

 Từ khóa (keyword)

 Các định danh (biến, tên hàm,…) (identifier)

Trang 42

Từ khóa

Dành riêng cho ngôn ngữ

int, return, float, double

Không được dùng cho mục đích đặt tên

Trang 44

Phạm vi của biến

Phạm vi của biến là vùng mà biến có thể được sử dụng

 Bắt đầu tại câu lệnh khai báo biến

 Kết thúc tại dấu đóng khối của khối gần nhất chứa nóBiến cục bộ: Khai báo trong hàm (main)

Biến toàn cục: khai báo ngoài hàm (main)

Trang 45

Các thành phần của một đối tượng (biến)

Thành phần:

 Miền giá trị của biến: kiểu

 Tên biến: theo qui tắc đặt tên

 Giá trị của biến Miền giá trị và tên biến không thay đổi, còn giá trị có thể thay đổi (thế nào là biến???)

Thao tác trên biến là thao tác trên giá trị của biến, chứ không phải trên tên của biến hoặc kiểu của biến

Trang 46

ĐốI tượng được định nghĩa

có thể mang giá trị rác (giá trị không xác định được)

Trang 50

Toán tử và độ ưu tiên

Trang 51

Toán tử và độ ưu tiên

Ví dụ

20 - 4 / 5 * 2 + 3 * 5 % 4

(4 / 5) ((4 / 5) * 2) ((4 / 5) * 2) (3 * 5) ((4 / 5) * 2) ((3 * 5) % 4) (20 -((4 / 5) * 2)) ((3 * 5) % 4) (20 -((4 / 5) * 2)) + ((3 * 5) % 4)

Trang 52

Định nghĩa và khởi tạo

Nếu chỉ định nghĩa thì giá trị của đối tượng không xác định được

Nên xác lập giá trị ngay lúc định nghĩa nếu được

 Những đối tượng sẽ nhập thì không cần

Trang 53

Ví dụ

char Loại = 'A';

float DiemTrungBinh = 5.0;

Trang 54

Thay đổi giá trị của đối tượng Toán tử và biểu thức

JPC and JWD © 2002 McGraw-Hill, Inc.

Trang 55

 Tính toán biểu thức trước (lượng giá biểu thức)

 Giá trị biểu thức được đưa vào đối tượng

Giá trị sẽ được gán vào đối tượng

Trang 56

NewStudents OldStudents

27 TotalStudents

Trang 57

27 TotalStudents

Trang 58

NewStudents OldStudents

27 TotalStudents

Trang 59

Ví dụ

Trang 60

Ví dụ

int Value1 = 10;

int Value2 = 20;

10 20 Value1

Value2

Trang 61

Value1 Value2

10 Hold

Trang 62

Value1 Value2

10 Hold

Trang 63

Value1 Value2

10 Hold

Trang 64

10 Hold

Trang 65

Value1 Value2

10 Hold

Trang 66

Ví dụ tăng

Trang 67

Ví dụ tăng

int i = 1;

i = i + 1;

Gán giá trị của biểu thức i + 1 vào i

Lượng giá được kết quả 2

2 i

Trang 68

Định nghĩa const

Từ khóa const để chỉ ra đốI tượng không thể thay đổi giá trị

sau khi định nghĩa và khởi tạo

 Đối tượng chỉ đọc

Dùng cho các đối tượng không có nhu cầu thay đổi giá trị hoặc không được thay đổi giá trị

const float Pi = 3.1415;

const int SampleSize = 100;

Const int DiemTrungBinh = 5.0;

Dễ quản lý, thay đổi các hằng số

Trang 70

Toán tử tăng giảm

Là hai toán tử một ngôi dùng để tăng , giảm một đơn vị trên đối tượng số nguyên

Ví dụ

int k = 4;

++k; // k = 5 k++; // k = 6

Trang 71

cout << a << b;

return 0;

}

Trang 72

Câu lệnh điều kiện If

Cơ chế cho phép một nhóm lệnh có được thi hành hay không.

JPC and JWD © 2002 McGraw-Hill, Inc.

Trang 73

Kiểu lôgic

Kiểu bool Kiểu bool có hai giá trị

Trang 77

Độ ưu tiên toán tử

Độ ưu tiên toán tử từ cao xuống thấp

Trang 78

Cấu trúc điều kiện

 Cấu trúc if đầy đủ if … else …

 Cấu trúc if lồng nhau if … else … if …

 Câu lệnh switch … case

Trang 80

Ví dụ

Viết chương trình nhập vào một số nguyên và in ra trị tuyệt đối của số đó (không được sử dụng hàm abs của thư viện cmath).Phân tích:

 Hành động 1: nhập vào một số nguyên

 Điều kiện: không có

 Hành động 2: Chuyển thành số không âm

 Điều kiện: số nhập vào là số âm

 Hành động 3: Xuất trị tuyệt đối

 Điều kiện: không có

Trang 81

Is our number negative?

If Value is not less than zero then our number is fine as is

If Value is less than

zero then we need to

update its value to

that of its additive

inverse

Our number is now definitely nonnegative

Trang 82

Ví dụ

Viết chương trình nhập vào 2 số nguyên và sắp xếp hai số đó theo thứ

tự tăng dần

Phân tích

 Gọi số thứ nhất là value1 Gọi số thứ hai là value2.

 Hành động 1: Nhập vào value1 và value2 (2 số nguyên)

 Điều kiện: không có

 Hành động 2: Đổi chỗ 2 số cho nhau t = value1; value1 = value2; value2= t;

 Điều kiện 2: Nếu số thứ nhất lớn hơn số thứ hai value1 > value2

 Hành động 3: Xuất hai số ra cout << value1 << value2;

 Điều kiện: không có

Trang 84

Giải thích

value2 < value1

int rememberValue1 = value1

value1 = value2 value2 = rememberValue1

The numbers are in

order

Trang 85

Cho biết kết quả đoạn lệnh sau?

Trang 86

ngược lại thi hành hành động 2.

Trang 88

larger than Value1 In

this case, Max is set

to Value2

No, its not So Value1

is at least as large asValue2 In this case,Max is set to Value1

Either case, Max is set

correctly

Trang 89

Cấu trúc if lồng nhau

Nếu trong hành động của phần if hoặc else lại chứa câu lệnh

if else thì ta có cấu trúc if lồng nhau

Ví dụ: Giải phương trình bậc nhất dạng Ax + B = 0

Trang 90

Chọn lựa: cấu trúc if lồng nhau

Cú pháp:

If (Điều kiện 1) Hành động 1 else if (Điều kiện 2) Hành động 2 else If …

… else Hành động n Trường hợp sử dụng:

 Có nhiều hơn 2 hành động

 Một trong các hành động đó xảy ra Nếu có n hành động thì có n-1 câu lệnh if

Trang 92

Cấu trúc lựa chọn switch

Trang 93

Cấu trúc lựa chọn switch (tt)

Trang 94

Không break

Trang 95

Ví dụ về switch

switch (ch) {

case 'a': case 'A':

case 'e': case 'E':

case 'i': case 'I':

case 'o': case 'O':

case 'u': case 'U':

cout << ch << " là nguyên âm" << endl;

Trang 96

cout << “Nhập vào biểu thức: ";

int Left;

int Right;

char Operator;

cin >> Left >> Operator >> Right;

cout << Left << " " << Operator << " " << Right << " = ";

switch (Operator) {

case '+' : cout << Left + Right << endl; break; case '-' : cout << Left - Right << endl; break; case '*' : cout << Left * Right << endl; break; case '/' : cout << Left / Right << endl; break; default: cout << “Không hợp lệ" << endl;

}

Trang 98

Viết chương trình nhập vào điểm thi môn Toán của 5 học sinh rồi tính điểm trung bình thi môn Toán của 5 học sinh đó.

Phân tích:

Điểm trung bình = tổng điểm / số học sinh Không cần phải lưu điểm của từng học sinh, chỉ cần lưu tổng điểm.

Ví dụ cấu trúc lặp

Trang 99

Tính tổng điểm cho 5 học sinh

double TongDiem = 0, diem;

Trang 100

Ví dụ cấu trúc lặp

Tính tổng điểm cho 50 sinh viên

 Đoạn mã lặp lại 50 lần (!!!)Tính tổng điểm cho số sinh viên không biết trước ???

 Không thể vì kích thước đoạn mã chương trình phải cố định

Trang 102

Hành động được thi hành lặp đi lặp lại cho đến khi biểu thức lôgic mang giá trị false

Nếu hành động lặp có nhiều hơn 1 câu lệnh thì phải đặt trong khối {}

Trang 103

Sơ đồ khối lệnh while

Expression

Action

true false

Expression isevaluated at thestart of eachiteration of the

Trang 104

Ví dụ tính điểm trung bình

Gọi SoHocSinh là số học sinh cần tính điểm trung bình.

Gọi Tong là tổng điểm hiện tại Ban đầu tổng điểm = 0.

Gọi diem là điểm môn Toán của học sinh (không cần lưu) Gọi Dem là số học sinh đã nhập điểm Ban đầu số hs đã nhập = 0 Hành động:

 Nhập điểm môn Toán của học sinh

 Cộng điểm mới vào tổng điểm hiện tại

 Tăng số học sinh đã nhập điểm Điều kiện lặp

 Số học sinh đã nhập điểm nhỏ số học sinh cần tính điểm trung bình.

Hai hành động tính điểm trung bình và xuất điểm trung bình tầm thường  không xét

Trang 105

Tính điểm trung bình của lớp

double DiemTrungBinh = Tong / Dem ;

cout << “Điểm trung bình: " << DiemTrungBinh << endl;

Trang 106

double DiemTrungBinh = Tong / Dem ;

cout << “Điểm trung bình: " << DiemTrungBinh << endl;

Giả sử nhập vào: 1 5 3 1 6

SoHocSinh 4

Trang 107

double DiemTrungBinh = Tong / Dem ;

cout << “Điểm trung bình: " << DiemTrungBinh << endl;

Trang 108

double DiemTrungBinh = Tong / Dem ;

cout << “Điểm trung bình: " << DiemTrungBinh << endl;

Dem Tong

Giả sử nhập vào: 1 5 3 1 6

4

SoHocSinh

00

Ngày đăng: 11/05/2021, 03:32

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w