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

I01 1 r cơ sở lập trình

49 52 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 49
Dung lượng 1,03 MB

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

Nội dung

Chương 2: Các kiểu dữ liệu và khai báo Chương 3: Phép toán và biểu thức Chương 4: Cấu trúc điều khiển Chương 5: Hàm Chương 6: Mảng một chiều Phần bài tập: cài đặt các bài tập để rèn luyệ

Trang 1

Phần 1: Các nội dung trọng tâm của môn học

Nội dung lý thuyết của môn học cơ sở lập trình tóm tắt trong 6 chương:

Chương 1: Giới thiệu về lập trình

Chương 2: Các kiểu dữ liệu và khai báo

Chương 3: Phép toán và biểu thức

Chương 4: Cấu trúc điều khiển

Chương 5: Hàm

Chương 6: Mảng một chiều

Phần bài tập: cài đặt các bài tập để rèn luyện kỹ năng lập trình

Chương 1: Giới thiệu về lập trình 1.1 Các khái niệm:

 Chương trình máy tính: hay chương trình là một dãy các chỉ thị (lệnh) được

viết để thực hiện một nhiệm vụ nhất đinh bằng máy tính Một tập hợp các chương trình máy tính và các dữ liệu liên quan thường được gọi là phần mềm

 Ngôn ngữ lập trình: (tiếng Anh: programming language) là ngôn ngữ dùng

để viết chương trình dùng cho máy tính Đây là một dạng ngôn ngữ được thiết

kế và chuẩn hóa để truyền các chỉ thị cho máy tính (hoặc máy khác có bộ xử lí) Ngôn ngữ lập trình có thể được dùng để tạo ra các chương trình nhằm mục đích điều khiển máy tính hoặc mô tả các thuật toán để người khác đọc hiểu

 Phân lớp các ngôn ngữ lập trình:

 Ngôn ngữ cấp thấp: gần với máy tính, dễ hiểu đối với máy tính nhưng lại

khó hiểu với con người Bao gồm: Mã máy (Ngôn ngữ máy), Hợp ngữ (Assembly)

 Ngôn ngữ cấp cao: gần với con người dễ hiểu với con người, nhưng khó

hiểu với máy Thông dụng: Pascal, Ngôn ngữ C, C++, Basic,

1.2 Lịch sử ngôn ngữ lập trình C/C++

 Ngôn ngữ lập trình C là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Ken Thompson và Dennis Ritchie dùng để viết hệ điều hành UNIX Từ đó ngôn ngữ này đã lan rộng ra nhiều hệ điều hành khác và trở thành một những ngôn ngữ phổ dụng nhất C là ngôn ngữ rất có hiệu quả

và được ưa chuộng nhất để viết các phần mềm hệ thống, mặc dù nó cũng được

Trang 2

dùng cho việc viết các ứng dụng Ngoài ra, C cũng thường được dùng làm phương tiện giảng dạy trong ngành học máy tính

 Bjarne Stroustrup của Bell Labs đã phát triển C++ trong suốt thập niên 1980 như là một bản nâng cao của ngôn ngữ C Những bổ sung nâng cao bắt đầu với sự thêm vào của khái niệm lớp, tiếp theo đó là các khái niệm hàm

ảo, chồng toán tử, đa kế thừa, tiêu bản, và xử lý ngoại lệ

 C++ là một loại ngôn ngữ lập trình Đây là một dạng ngôn ngữ đa mẫu hình tự

do có kiểu tĩnh và hỗ trợ lập trình thủ tục, dữ liệu trừu trượng, lập trình hướng đối tượng, và lập trình đa hình Từ thập niên 1990, C++ đã trở thành một trong những ngôn ngữ thương mại phổ biến nhất

1.3 Các bước xây dựng chương trình

 Xác định mục đích của chương trình

 Xây dựng thuật toán phù hợp giải quyết bài toán (mã giả , lưu đồ, …)

 Cài đặt thuật toán bằng C/C++

 Biên dịch

 Thực thi chương trình và kiểm thử

 Bảo trì

1.4 Các bước phát triển chương trình

 Dùng trình soạn thảo nhập mã nguồn (source code) file.cpp

 Dùng chương trình biên dịch (compile)  tập tin đối tượng file.obj

 Các tập tin đối tượng file.obj được liên kết mã đối tượng của các hàm thư viện

 tập tin thực thi file.exe

 Thực thi file.exe và kiểm thử

Quá trình trên được lặp lại cho đến khi tập tin thực thi thực hiện đúng theo yêu cầu

1.5 Giai đoạn bảo trì

Trang 3

Mô tả khi chương trình chạy đã dịch thành mã máy

 Hỏi nhập giá trị a  Nhập giá trị a

 Hỏi nhập giá trị b  Nhập giá trị b

 In ra kết quả a + b

 In ra câu chào

1.7 Cấu trúc của một chương trình C/C++

/* Mô tả mục đích của chương trình

Tác giả

Ngày viết */ (ghi chú khối trên nhiều dòng – không bắt buộc)

# include <fileName.h>

Khai báo prototype của hàm tự tạo (nếu có);

TypeName main() // TypeName: tên kiểu dữ liệu

{

Lệnh;

}

Cài đặt hàm tự tạo (nếu có)

1.8 Các tập tin thư viện thông dụng

Trang 4

Là các tập tin chứa định nghĩa các hàm thông dụng khi lập trình C/C++ Để sử các hàm trong tập tin thư viện thì phải khai báo đầu chương trình

# include <FileName.h>

// FileName.h: tên hàm thư viện, các hàm thông dụng

 iostream chứa các hàm liên quan đến xuất/nhập: cin, cout, …

 math.h chứa các hàm toán học: abs(), sqrt(), log(), log10(), sin(), cos(),tan(), asin(), acos(), atan(), pow(),exp(),… dùng cho các số thực

 iomanip.h chứa các hàm setw(n) nhảy đến n ký tự

 stdlib.h chứa hàm: rand() tạo số ngẫu nhiên

Trang 5

Chương 2: Các kiểu dữ liệu và khai báo Mục tiêu

 Giúp cho sinh viên hiểu khái niệm danh hiệu, từ khóa cũng như cách đặt tên cho danh hiệu

 Áp dụng kiểu dữ liệu, khai báo biến, hằng phù hợp với chương trình cụ thể

 Sử dụng được một số hằng đã định nghĩa trước trong thư viện C++

Nội dung

 Các kiểu dữ liệu cơ bản và miền trị

 Danh hiệu và từ khóa

 Biến

 Hằng

 Một số hằng định nghĩa trước trong thư viện C++

2.1 Các kiểu dữ liệu và khai báo

 Mỗi ngôn ngữ lập trình đều định nghĩa sẵn các kiểu dữ liệu cơ bản

 Dữ liệu trong chương trình phải thuộc một kiểu dữ liệu nhất định

 Mỗi kiểu dữ liệu có tên kiểu, kích thước và phạm vi chứa dữ liệu

 Dữ liệu sử dụng trong chương trình phải được khai báo trước

Các kiểu dữ liệu cơ bản (data types):

2.1.1.1 Kiểu số nguyên int:

 Kích thước: kiểu int tùy thuộc váo máy tính cài hệ điều hành 32 bit (4 byte) hoặc 64 bit (8 byte)

 Phạm vi: Kiểu int với n bit -2n-1  2n-1 -1

2.1.1.2 Những biến thể kiểu số nguyên

Dùng các từ khóa short, long, unsigned đứng trước int trong khai báo kiểu sẽ làm thay đổi phạm vi kiểu

Trang 6

 Kiểu short int (hay short): dùng 4 byte

 Kiểu long int (hay long): dùng 4 byte

 Kiểu unsigned int (hay int): tùy thuộc vào hệ điều hành của máy tính 32 bit (hay 64 bit), là số nguyên không dấu có phạm vi từ: 0  2n -1 (n: số bit)

Qui ước khi viết các hằng số nguyên

 Kiểu char: dùng 1 byte biểu diễn các ký tự trong bảng mã ASCII

 Một số giá trị trong bảng mã ASCII

Trang 7

 Kiểu luận lý trong Visual C++ là bool có giá trị true/false

2.2 Từ khóa và danh hiệu

2.2.2 Danh hiệu

Danh hiệu: là tên của các biến, hằng, hàm, …

Danh hiệu có thể là 1 hoặc nhiều ký tự, ký tự bắt đầu phải là chữ cái hoặc dấu _ (underscore) theo sau phải là chữ cái, số hoặc dấu _ ; nên đặt tên gợi nhớ

high_balance high balance

Lưu ý khi sử dụng danh hiệu

 Danh hiệu phân biệt chữ thường và hoa:

count, Count, COUNT là 3 danh hiệu khác nhau

 Danh hiệu không được trùng tên với từ khóa và các tên hàm trong thư viện

Trang 8

2.3 Biến

 Biến: là một định danh của một vùng nhớ dùng để lưu trữ một giá trị, có thể

bị thay đổi bởi chương trình

 Biến phải được khai báo trước khi sử dụng

2.3.1 Khai báo biến không khởi tạo giá trị

2.3.2 Khai báo biến khởi tạo giá trị

Cú pháp: kiểu_dữ_liệu <tên_biến> = giá_trị ;

#define tên_hằng giá_trị_hằng

hoặc: dùng từ khóa const;

const kiểu_dữ_liệu <tên_hằng> = giá_trị_hằng ;

 Ví dụ:

#define SOSV 50

#define MAX 100

Trang 9

Chương 3: Phép toán và biểu thức 3.1 Các phép toán số học:

 Phép tính phần dư của phép chia số nguyên: %

3.2 Các phép toán: có kết quả là kiểu luận lý

Trang 10

Ví dụ:

 k = a+ ++b; tương đương với {b++; k=a+b}

 k = a+ b++ tương đương với { k=a+b; b++ }

Ví du: x = (y=3, y+1);

Đầu tiên y=3, x =y+1 là 4

3.6 Chuyển đổi kiểu trong biểu thức

Khi các hằng và biến chứa trong biểu thức có các kiểu khác nhau Trình biên dịch sẽ thực hiện chuyển thành cùng kiểu của toán hạng có kiểu lớn nhất, trước khi các phép toán được thực hiện

Ví dụ:

Trang 11

3.7 Ép kiểu (casting)

 Dùng để ép một biểu thức thành một kiểu theo mong muốn

 Dạng tổng quát:

(type) expression hoặc type (expression)

Trong đó: type là tên một kiểu dữ liệu

Ví dụ:

float result;

result = 7/2; // chia nguyên  result=3

result = (float)7/2; //  result=3.5

result = float(7)/2; //  result=3.5

3.8 Dạng viết tắt của câu lệnh gán

 Các toán tử số học (+, -, *, /, %): viết tắt các lệnh +=, -=, *=, /=, %=

 Dạng tổng quát:

bien = bien (toán tử số học) bieuthuc;

bien (toán tử số học) = bieuthuc;

* / % + -

<< >>

< <= > >=

Trang 13

Chương 4: Cấu trúc điều khiển Mục tiêu

 Hiểu được các cấu trúc điều khiển: cấu trúc tuần tự, cấu trúc lựa chọn và cấu trúc lặp

 Áp dụng các cấu trúc điều khiển trong chương trình cụ thể có hiệu quả

1 Cấu trúc tuần tự (sequence): Thực hiện lệnh theo thứ tự từ trên xuống

2 Cấu trúc lựa chọn (selection): Dựa vào kết quả biểu thức luận lý, mà chọn

lựa lệnh tương ứng thực hiện: gồm if, switch

3 Cấu trúc lặp (loop): Lặp lại 1 hay nhiều lần khối lệnh cho đến khi biểu thức luận lý là sai; gồm: for, while, do … while

Trang 16

cout << “Nhap so thu nhat “ ; cin >> a;

cout << “Nhap so thu hai “ ; cin >> b;

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

 switch là cấu lựa chọn có nhiều nhánh, so sánh bằng char hoặc integer

 Khi có nhiều lựa chọn thì đây là cấu trúc phù hợp; thay vì phải dùng nhiều if

… else lồng nhau

Trang 17

}

Trong đó X so sánh với các giá trị X 1 , X 2 , , X n

Giải thích: cấu trúc lựa chọn switch

 Trước tiên chương trình sẽ định giá trị X

 Nếu giá trị X=X1  thực hiện S1, có break chương trình thoát cấu trúc switch; ngược lại: X so sánh X2, …., Xn (tương tự)

 Nếu tất cả so sánh trên đều sai  thực hiện S trong default (nếu có)

Lưu ý

 Không bắt buộc phải có default

 Thông thường trong mỗi case có lệnh break để thoát khỏi cấu trúc switch

Ví dụ: Nhập vào 2 số nguyên và phép toán thuộc về { +,-,*,/,%} Xuất ra kết quả của phép toán với hai số vừa nhập

Trang 18

char PT;

cout << “Nhap a: “; cin >> a;

cout << “Nhap b: “; cin >> b;

cout << “Nhap phep toan : “; cin >> PT;

switch (PT) {

Trang 19

b1 Exp1 được khởi tạo và chỉ được gán trị 1 lần

b2 Exp2 điều kiện được định trị

b3 Nếu Exp2 = true  S được thực hiện, Exp3 được thực thi, rồi quay lại b2

Nếu Exp2 = false  thoát khỏi for

Trang 20

Lưu đồ Cấu trúc for

Ví dụ 1: Viết chương trình nhập vào số nguyên n tính tổng từ 1 đến n

cout <<“\nNhap so n = “ ; cin >> n;

for ( i=1; i <=n; i++)

Trang 21

Giải thích

b1 btL được định trị

b2 Nếu btL = True  S được thực hiện

Khi đó có thể thay đổi giá trị btL

Quay lên b1

b3 Nếu btL = False  thoát vòng lặp while

Lưu ý

 Nếu bắt đầu btL = False  vòng lặp while không thực hiện S

 Bên trong vòng lặp while phải buộc btL = False; nếu không sẽ lặp vô tận

Lưu đồ cấu trúc while

Ví dụ 1: Viết chương trình tính tổng các số nguyên từ 1 đến n

# include <iostream>

using namespace std;

Trang 22

s = s + i; i++;

} cout << “Tổng: 1+ …+”<<n<<“ = “ <<s<<endl;

Trang 23

b3 Nếu btL = True  quay lên b1

Nếu btL = False  thoát khỏi do …while

Lưu ý

 Bắt đầu S thực hiện  S được thực hiện ít nhất 1 lần

 Quá trình thực hiện vòng lặp do … while phải buộc btL = False; nếu không

sẽ lặp vô tận

Lưu đồ cấu trúc do … while

Trang 24

Ví dụ 1: Viết chương trình in các số nguyên từ 1 đến 10

Trang 25

4.5.1 Lệnh break

 Thường dùng trong case của cấu trúc switch để thoát switch

 Ngoài ra lệnh break còn dùng trong các cấu trúc lặp: for, while, do … while

để thoát vòng lặp sớm khi chưa đến cuối vòng lặp, thường đi kèm với lệnh if

Ví dụ 1: Viết chương trình tính tổng của n số nguyên dương nhập vào; chương

cout <<“Nhap vao so = “; cin >>n;

if (n < 0)

break;

s = s + n;

} cout << “\nTổng của các số = “ <<s;

}

Ví dụ 2: Viết chương trình tính tổng của n số nguyên dương nhập vào; chương

trình kết thúc khi nhập số âm, không dùng lệnh break

cout <<“Nhap vao so = “; cin >>n;

Trang 26

Ví dụ: Viết chương trình nhập vào các số nguyên, chỉ tính tổng các số nguyên

dương và thoát khi nhập số 0

Trang 27

Chương 5: Hàm 5.1 Đặt vấn đề:

Cho đến bây giờ, ta biết được các chỉ thị cơ bản:

 Khai báo biến, các phép toán đơn giản, kiểm tra các điều kiện hay viết các vòng lặp…

 Một chương trình viết từ đầu đến cuối trở nên rất khó hiểu với chiều dài của

 Khi hàm được gọi thì khối lệnh trong hàm được thực thi

 Hàm có thể trả về 1 giá trị hoặc không (thủ tục), hàm có thể được gọi từ chương trình chính (main()) hoặc từ hàm khác và có thể được gọi nhiều lần

Trang 28

Ví dụ: Tìm min của 4 giá trị a, b, c, d

cout <<“Nhap a = “; cin>>a;

cout <<“Nhap b = “; cin>>b;

cout <<“Nhap c = “; cin>>c;

cout <<“Nhap d = “; cin>>d;

Trang 29

 Danh sách các tham biến truyền cho nó

 Phần thân hàm: là dãy các chỉ thị để thực hiện khi hàm được gọi

//Khai báo hàm: function prototype

kieu_tra_ve Ten_ham(ds cac_tham_bien);

Trang 30

5.4 Các qui tắc về phạm vi của hàm:

 Hàm được xem như hộp đen, phần thân của hàm được thực thi khi hàm được gọi; mã và dữ liệu bên trong hàm không tương tác với mã và dữ liệu trong các hàm khác

 Những khai báo biến bên trong hàm là biến cục bộ; những biến này được tạo

ra khi hàm được gọi và biến mất khi hàm thực thi xong

5.5 Tham số hình thức và tham số thực

 Khi khai báo hàm là khai báo các tham số hình thức

 Khi gọi hàm thực thi, ta cung cấp các giá trị thực tương ứng với tham số hình thức nên được gọi là tham số thực

Ví dụ:

minAB = min(17, 9) // Gọi hàm

int min(int a, int b) // Tham số hình thức

Trang 31

doubleNum(a); // bien a trong hàm = 60

cout <<“\Biến a trong main = “<<a; // a= 30

5.5.2 Truyền tham biến (tham chiếu):

Trong cách này địa chỉ đối số được chép vào tham số hình thức Do đó những thay đổi trên tham số hình thức sẽ làm thay đổi trên đối số

Ví dụ 2: truyền tham biến

# include <iostream>

using manespace std;

void doubleNum(int *b); // prototype

// *b: lấy giá trị tại địa chỉ của biến b

void main()

{

int a = 40;

doubleNum(&a); // &a: lấy địa chỉ tại biến a

cout <<"\nBien a trong main = "<<a; // a= 80

Trang 32

 Cách 1: dùng để kết thúc ngay hàm chứa nó và trả điều khiển về chương trình gọi hàm

 Cách 2: dùng trả về giá trị cho chương trình gọi hàm

Ví dụ 1: In các phần tử của mảng, nếu gặp các phần tử có giá trị âm dùng return 0

t2 = total(a2, 6); // goi ham

cout <<“\nTong nang 1: “<<t1;

cout <<“\nTong nang 2: “<<t2;

}

int total(int a[ ], int size) // cai dat ham

{

int sum =0;

Trang 33

sum = sum + a[i];

return sum;

}

Chương 6: Mảng một chiều Mục tiêu

 Hiểu cấu trúc dữ liệu mảng (một chiều)

 Áp dụng được các thao tác trên mảng: nhập, xuất, truyền mảng đến hàm, xếp thứ tự đơn giản, tìm kiếm

Nội dung

 Hiểu cấu trúc dữ liệu mảng (một chiều)

 Áp dụng được các thao tác trên mảng: nhập, xuất, truyền mảng đến hàm, xếp thứ tự đơn giản, tìm kiếm

6.1 Giới thiệu mảng

 Mảng: tập hợp các biến có cùng kiểu dữ liệu được sắp kề nhau liên tục trong

bộ nhớ, được tham chiếu bởi tên chung (tên mảng)

 Mỗi phần tử của mảng được tham chiếu thông qua chỉ mục Nếu mảng có n phần tử được đánh chỉ mục từ 0  (n-1)

 Số phần tử trong mảng được gọi là kích thước của mảng Kích thước mảng là

cố định và phải khai báo trước, để trình biên dịch cấp phát bộ nhớ cho nó

 Kích thước của mảng được tính bằng byte:

TotalSize = sizeof(type) * elements

 Để tham chiếu đến phần tử thứ i của mảng M là: M[i]

Trang 34

 Ví dụ: Khai báo mảng M có 10 phần tử có kiểu int

<tên kiểu> <tên mảng>[ ] = { dãy giá trị };

Trong đó:[] kích thước không khai báo, mà ngầm định là số phần tử trong {dãy giá trị}, mỗi phần tử cách dấu phẩy

Ngày đăng: 25/10/2019, 10:12

TỪ KHÓA LIÊN QUAN

w