88
Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0 Môn này rất quan trọng và rất khó, năm nào cũng rớt 90% . Môn này là tiền đề để học các môn còn lại : Cấu trúc dữ liệu, Java , C#... LÀM SAO ĐỂ CHẠY 1 CHƯƠNG TRÌNH C Trong 1 chương trình có 1 hàm tên là main , hàm này dùng để chạy chương trình Trong chương trình C : Để xuất dữ liệu ta dùng luồng xuất cout<< Để nhập dữ liệu ta dùng luồng nhập cin>> 2 luồng nhập xuất này nằm trong thư viện iostream.h . Do đó ta phải include vào: + lưu với đuôi là .cpp, bản Cfree 4.0 hàm main dùng void, từ 5.0 trở ên sẽ xuất dòng chữ : Que huong la chum khe ngot. ng trình ta nhấn phím F5 xuất ra phím tab xuống dòng Hãy xuất ra màn hình đoạn văn dưới: Đêm thu buồn lắm chị hằng ơi Trần thế nay em chán nửa rồi cung quế có ai ngồi đó chửa cành đa xin chị nhắc lên cho huỗi phải để trong nháy đối ết thúc 1 câu lệnh phải có dấu chấm phẩy

Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

  • Upload
    duard

  • View
    81

  • Download
    0

Embed Size (px)

DESCRIPTION

Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0 Môn này rất quan trọng và rất khó, năm nào cũng rớt 90% . Môn này là tiền đề để học các môn còn lại : Cấu trúc dữ liệu, Java , C#... LÀM SAO ĐỂ CHẠY 1 CHƯƠNG TRÌNH C - PowerPoint PPT Presentation

Citation preview

Page 1: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0Môn này rất quan trọng và rất khó, năm nào cũng rớt 90% . Môn này là tiền đề để học các môn còn lại : Cấu trúc dữ liệu, Java , C#...

LÀM SAO ĐỂ CHẠY 1 CHƯƠNG TRÌNH CTrong 1 chương trình có 1 hàm tên là main , hàm này dùng để chạy chương trìnhTrong chương trình C :

Để xuất dữ liệu ta dùng luồng xuất cout<< Để nhập dữ liệu ta dùng luồng nhập cin>>

2 luồng nhập xuất này nằm trong thư viện iostream.h . Do đó ta phải include vào:

- Tập tin C++ lưu với đuôi là .cpp, bản Cfree 4.0 hàm main dùng void, từ 5.0 trở lên dùng intDòng lệnh trên sẽ xuất dòng chữ : Que huong la chum khe ngot.Để chạy chương trình ta nhấn phím F5cout<<“\t” xuất ra phím tabcout<<“\n” xuống dòng

Hãy xuất ra màn hình đoạn văn dưới:Đêm thu buồn lắm chị hằng ơiTrần thế nay em chán nửa rồi cung quế có ai ngồi đó chửa

cành đa xin chị nhắc lên cho- chuỗi phải để trong nháy đối- Kết thúc 1 câu lệnh phải có dấu chấm phẩy

Page 2: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Học về các kiểu dữ liệu trong C Học cách khai báo biến, sử dụng biến------------------------------------------------Trong C có rất nhiều kiểu dữ liệu, ở đây ta tiếp cận 3 kiểu dữ liệu chính:- Kiểu số nguyên, khai báo là int- Kiểu số thực, khai báo là float - Kiểu ký tự, khai báo là char*** Kiểu int chỉ chấp nhập số nguyên âm hoặc dương, tức là nó không chấp nhận các số có chữ số thập phân ( ví dụ: số 5, số 6 thì chấp nhập, còn 5.3, 6.5 là không chấp nhận)*** Kiểu float chấp nhập số nguyên âm, số nguyên dương , và số có chứa chữ số thập phân ( ví dụ: số 5, 6, 5.3, 6.5 đều được chấp nhận)*** kiểu ký tự :chỉ chấp nhập 1 ký tự ( ví dụ : ‘a’ , ‘b’ , ‘z’ …)----------------------------------------------------------Cách khai báo 1 biến như thế nào?

Kiểu_dữ_liệu tên_biến ; Tên biến không được để khoảng trắng, không được chứa chữ số đằng trước, Nếu muốn khai báo nhiều biến cùng nằm trên 1 dòng thì các biến này cách nhau bởi dấu phẩyVí dụ 1: Hãy khai báo một biến tên là x có kiểu dữ liệu là kiểu nguyên

int x; hoặc int x=10;Tức là ta có thể kết hợp khai báo biến và khởi tạo giá trị cho biến luônVí dụ 2: Khai báo biến x, y, z có cùng kiểu số thực: float x, y, z ;

Page 3: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Khai báo hằng số như thế nào?

Giống như khai báo biến, nhưng ở đây chúng ta thêm từ khóa const đằng trước kiểu dữ liệu- Đặc điểm của hằng là không thể thay đổi được giá trị khi đã khai báo. Tức là nếu như chúng ta cố gắng gán giá trị PI = một giá trị nào khác thì sẽ báo lỗi.

Page 4: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

- Trước khi làm 1 bài toán, chúng ta phải đọc kỹ đề bài để kiểm tra DỮ LIỆU ĐẦU VÀO trước.

INPUT(dữ liệu đầu

vào)

OUTPUT(dữ liệu đầu

ra)PROCESS

Bán kính R CVDt

Cv=2*Pi*RDt=Pi*r2

Page 5: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Cạnh a Cvdt

Cv=4*aDt=a*a

Page 6: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Các hàm toán học, lượng giác:

#include<math.h>1) Tính căn bậc 2: cout<< sqrt(4); sqrt là 1 hàm có sẵn, đối số truyền vào là 1 số bất kỳtrả về căn bậc 22) Hàm tính lũy thừa pow(x,y) tính lũy thừa xy

ví dụ : pow(3,4) 34

3) Hàm tính giá trị tuyệt đối : abs(x) Ví dụ: abs(-4) 4

Các hàm lượng giác:Tính theo radian. Tức là khi nhập vào 1 góc có 1 độ nào đó thì phải đổi độ này ra radianCách đổi từ độ radian : radian=độ*PI/180Hàm sin dùng công thức : sin(radian)Hàm cos dùng công thức : cos(radian)Hàm tag dùng công thức : tan(radian)Hàm cotag dùng công thức: 1/tan(radian)

Page 7: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Học về toán tử 3 ngôiBiểu thức điều kiện ? Biểu thức A : Biểu thức BNếu biểu thức điều kiện là đúng thì biểu thức A sẽ thực hiệnNếu biểu thức điều kiện là sai thì biểu thức B sẽ thực hiệnVí dụ:int ketqua=7;cout<<(ketqua>=5? “Đậu” : “rớt”);Ở đây : ketqua>=5 là biểu thức điều kiện. Ta thấy ketqua=7, tức là hỏi xem 7>=5 hay không ta thấy đúng biểu thức điều kiện ĐÚNG= biểu thức A thực hiệnMà biểu thức A chính là chữ “ĐẬU”xuất ra chữ Đậu

Học về toán tử % Toán tử % dùng để lấy số dư của phép chia. Nó chỉ chấp nhận kiểu số nguyên mà thôi. ví dụ: int x=10; int sodu=10%3; sodu=1 float y=10; int sodu=y%3 ; báo lỗi vì y có kiểu số thực, mà % chỉ cho số nguyên

Page 8: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

A% B Nếu A% B mà bằng 0 tức là A chia hết cho B if(A%B==0) { cout<<“A chia hết cho B”; }Nếu A%2 mà bằng 0 tức là A là số chẵn if(A%2==0) { cout<<“A là số chẵn” } Toán tử % chỉ chấn nhận kiểu số nguyên : int, unsigned int, short.Ví dụ 1:float A=7;if(A%2==0) báo lỗi ngay vì A có kiểu số thực{}Ví dụ 2:int A=7;if(A%2!=0) đúng{ cout<<“A là số lẻ”;}

Page 9: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Mã ASCII – ép kiểuTrong máy tính, mỗi một ký tự, mỗi 1 con số đều có 1 mã số riêng không trùng nhau, mã số này được gọi là mã ASCIIVí dụ:Nhập vào số 1, hỏi xem số 1 có mã ASCII là bao nhiêu?Nhập và ký tự A, ký tự a. hỏi mã ASCII lần lượt là bao nhiêuvoid main(){}Từ C Free 4.0 trở xuống thì sài void main, các phiên bản trở lên dùng int main()HỌC ép kiểu : - Ép kiểu rộng : sẽ không làm mất mát dữ liệu - Ép kiểu hẹp : sẽ làm mất mát dữ liệuint n =5;float f=(float)n; ép kiểu rộng (ép từ kiểu nhỏ qua kiểu lớn ko mất dữ liệu)float k=5.5;int t =(int)k; ép kiểu ép hẹp (ép từ kiểu lớn qua kiểu nhỏ mất dữ liệu, vì kết quả chỉ còn 5 chứ không còn 5.5)Chú ý: Không phải lúc nào cũng ép kiểu được, thông thường ta ép từ số thực qua số nguyên, hoặc ngược lại. Nếu ta cố tình ép từ kiểu chuỗi qua kiểu số ngoặc ngược lại thì sẽ bị báo lỗi vì do kiểu dữ liệu không tương thích

Page 10: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 11: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 12: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 13: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Vậy giả sử nhập n =789 tức là xuất ra màn hình số gì ? 987

Bây giờ ta chạy ta cho 1 số cụ thể, ở đây là số 789:n=789;int tam=n;int s1=tam%10=789%10=9 (% là phép chia lấy dư, 789 chia 10 = 78 dư 9)tam=tam/10 =789/10=78int s2 = tam%10 =78%10 =8tam=tam/10 = 78/10=7int s3 =tam%10 = 7%10 =7tam =tam/10 =7/10= 0ngừng, ko tính nữaSuy ra số ngược của n = s1*100 + s2*10+s3 = 9*100+ 8*10+7 =900+80+7 =987

Page 14: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Cấu trúc điều khiển if elseCó 3 dạng cơ bản mà chúng ta thường gặp như sau:1) chỉ có một mình hàm if if(điều kiện ) { các biểu thức trong if }Nếu điều kiện đúng thì các biểu thức trong if sẽ được thực hiệnChú ý: Điều kiện có thể là kiểu luận lý (true hoặc false), hoặc là kiểu nguyên. Nếu là kiểu nguyên thì số 0 là đại diện cho false, các số khác không là đại diện cho trueVí dụ 1:bool b=true;if(b==true){ cout<<“xử lý cái gì đó”;}Ví dụ 2:if(100){ cout<<“xử lý cái gì đó”;}

Ví dụ 3:if(0){ cout<<“Không bao giờ vào đây được”;}

Ta nên có ngoặc nhọn để bao bọc thân hàm if cho dù bên trong nó chỉ có 1 dòng lệnh

Page 15: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Cấu trúc điều khiển if elseCó 3 dạng cơ bản mà chúng ta thường gặp như sau:2) Dạng có if và có else if(điều kiện) { cout<<“Điều kiện đúng thì vào đây”; } else { cout<<“Điều kiện sai thì vào đây”; }

Cách thực hiện:Khi điều kiện đúng thì các biểu thức ở bên trong hàm if sẽ được thực hiện, khi điều kiện sai thì các biểu thức bên trong else được thực hiện

Ví dụ: Nhập vào điểm cho sinh viên, nếu điểm >=5 thì ghi đậu, ngược lại ghi rớt

Page 16: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Cấu trúc điều khiển if elseCó 3 dạng cơ bản mà chúng ta thường gặp như sau:3) Kết hợp if, else if , elseif(điều kiện 1){ cout<<“điều kiện 1 đúng thì vào đây”;}else if(điều kiện 2){ cout<<“Điều kiện 2 đúng thì vào đây”;}else if(điều kiện n){ cout<<“Điều kiện n đúng thì vào đây”;}else{ cout<<“các điều kiện khác vào đây”;}

Những lỗi thường gặp :Các điều kiện kế tiếp ta hay quên else if (điều kiện) mà chỉ gõ else (điều kiện) bị sai. Đã có điều kiện thì phải gõ else if

Ví dụ: Nhập điểm, nếu điểm >=9 ghi là xuất sắc, nếu điểm >=8 ghi là giỏi, nếu điểm >=7 ghi là khá, nếu điểm >=5 ghi là trung bình, còn lại ghi là yếu.

Page 17: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Một số lưu khi so sánh:1) So sánh bằng : gõ 2 dấu bằng (==) Nếu ta gõ 1 dấu bằng (=) thì nó sẽ trở thành phép gán và làm thay đổi giá trị của biến (gây sai chương trình)2) So sánh lớn hơn hoặc bằng (>=) . So sánh nhỏ hơn hoặc bằng (<=)3) So sánh khác dùng !=4) Chúng ta có thể kết hợp các điều kiện: - điều kiện và dùng 2 ký tự && (dùng 1 ký tự & là sai thì nó là toán tử trên bit) - điều kiện hoặc dùng 2 ký tự || (dùng 2 ký tự gạch đứng, dùng 1 ký tự là sai)Ví dụ: Nếu điểm lớn hơn hoặc bằng 7 và nhỏ hơn hoặc bằng 8 thì thưởng 100 nghìn

if(diem >=7 && diem<=8){ cout<<“thuong 100 nghin”}Nếu phải kết hợp nhiều điều kiện với nhau thì ta nên để trong ngoặc đơn.Ví dụ: Kiểm tra xem một năm bất kỳ nhập vào từ bàn phím có phải là năm nhuần hay không. Biết rằng Năm nhuần là năm chia hết cho 4 những không chia hết cho 100 hoặc chia hết cho 400.if((nam % 4==0 && nam%100!=0) || nam%400==0){ cout<<“nhuần nhuần”;}

Page 18: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Bài tập chương 3

Page 19: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Bài tập chương 3

Page 20: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Bài tập chương 3

Page 21: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Bài tập chương 3

Page 22: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Bài tập chương 3

Page 23: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Cấu trúc Switch caseChấp nhận kiểu nguyên ( int, unsigned int, char)switch(điều kiên){ case giá trị 1: break; case giá trị 2: break; ……. default: //khi tất cả điều kiện đều ko nhảy vào bất kỳ case nào thì nó sẽ vào default}Có thể kết hợp nhiều case lại với:switch(điều kiện){ case giá trị 1 : case giá trị 2: break;}

NHập vào 1 tháng bất kỳ, kiểm tra xem tháng có bao nhiêu ngày, nếu là tháng 2 thì kiểm tra năm nhuần

Page 24: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Ví dụ 1 : Nhập vào 1 tháng bất kỳ, xuất ra số ngày của tháng đó.Biết rằng các tháng 1,3,5,7,8,10,12 có 31 ngày.Tháng 4,6,9,11 có 30 ngàyTháng 2, nếu là năm nhuần có 29 ngày, ngược lại 28 ngày

Ví dụ 2: Nhập vào 1 tháng, hỏi tháng này thuộc quý mấy.Biết rằng, 1 năm có 4 quýTháng 1,2,3 là quý 1Tháng 4,5,6 là quý 2Tháng 7,8,9 là quý 3Tháng 10,11,12 là quý 4

Ví dụ 3: Nhập 2 số a,b, và Ký tự chNếu + cộng- trừ- Vân vân

Page 25: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Sửa lại ví dụ 1:

Page 26: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 27: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Cấu trúc vòng lặp : for, while, do … whileChú ý: các cấu trúc này rất khó và rất quan trọng1) Vòng lặp for

for(khởi tạo ; điều kiện ; bước nhảy){ //thân vòng lặp}Cách thực hiện:1. đầu tiên khởi tạo sẽ thực thi trước Sau đó Điều kiện sẽ kiểm tra liền, nếu điều kiện đúng thì thân vòng lặp mới được thực hiện2. Thân vòng lặp thực hiện xong thì Bước nhảy sẽ thực hiện3. BƯớc nhảy làm xong thì điều kiện sẽ kiểm tra liền, nếu điều kiện đúng thì thực thi**** Như vậy vòng for sẽ kết thúc khi điều kiện sai

Page 28: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

1) Vòng lặp for Khởi tạo

biến

Điều kiện Điều kiện sai

Kết thúc

Thân vòng lặp làm

Điều kiện đúng

Bước nhảy làm

Page 29: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

ThÔng thường nếu chỉ có 1 vòng for, thì các biến bên trong của for ta đặt tên là i i++ là gì ? i++ tức là ta muốn tăng i lên 1 đơn vị . Bởi vì i ++ tương đương với i=i+1Như vậy nếu ta muốn tăng i lên 2 lần thì sao?i=i+2 hoặc i+=2

Thử chạy tay với n =5

Khởi tạo n =5, s =0;Vòng for chạy thực tế trong máy như sau:1) khởi tạo i =1, kiểm tra liền hỏi i<=n?? 1 <=5 ???đúng làm body for. làm s=s+is=0+1=12) Body for làm xong thì bước nhảy làm làm i++ i=i+1=1+1=2, kiểm tra liền hỏi i<=n ?? 2<=5 ???đúng làm body for: làm s=s+I =1+2=33) Body làm xong bước nhảy làm i++i=3 kiểm tra liền, kiểm tra i<=n??? 3<=5đúng

làm body for: làm s=s+I =3+3=64) Body xong thì b nhảy làmi++i=4, kiểm tra liền i<=n 4<=5??đúnglàm body for: làm s=s+i=6+4=105) Body xong thì làm b nhảy, i++i=5, kiểm tra liền i<=n 5<=5 ??đúng lam body for s=s+i=10+5=156)Body xong, b nhảy làm i++i=6, kiểm tra liền i<=n 6<=5sai ngừng forta dc s=15

Page 30: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Nếu bước nhảy bằng 1 (i++) thì ta kiểm tra là số chẵn mới cộng dồn (i%2==0)

Vì bước nhảy bằng 2 (i=i+2) và khởi tạo bắt đầu từ 2 nên chắc chắn luôn là số chẵn nhanh hơn

Page 31: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 32: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Vòng lặp while và do …. While

while(điều kiện ){ //thân vòng lặp}- Nếu điều kiện đúng thì thân vòng

lặp đc thực hiện, nếu đk sai thì kết thúc vòng lặp

- Trong hàm while thì thân vòng lặp có thể KHÔNG ĐƯỢC thực thi lần nào cả

do{ //thân vòng lặp

}while(điều kiện);- Thân vòng ít nhất được thực

thi 1 lần- Hàm do while sẽ thực thi

xong rồi mới kiểm tra điều kiện

Thông thường ta sử dụng while, do … while để thiết lập vòng lặp vĩnh cửu để thực các dòng lệnh liên tục nào đó. ta sẽ kết hợp với từ khóa break để thoát khỏi vòng lặp vĩnh cửu.

Page 33: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 34: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

- Dùng break để thoát khỏi vòng lặp vĩnh cửu. Hoặc nếu chúng ta muốn thoát khỏi vòng lặp ở vị trí nào thì cứ gọi break tại vị trí đó- Dùng continue để bỏ qua các lệnh ở bên dưới và tiếp tục quay lại thực hiện các lệnh bên trên

Page 35: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

#include<iostream.h>void main()

{int n; int s=0;

cout<<"Nhap n: "; cin>> n; for(int i=1; i<=n; i++)

{s=s+i;

}cout<<s;

}

Page 36: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

1 nxi

pow(x,y) tính xy Ví dụ pow(3,4) 34

#include<math.h>

Page 37: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

1 nX2*i

1 nX2*i+1)

S=x;For(int i=1;i<=n;i++){

}

Page 38: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

1n

1

Page 39: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

unsigned int n;Giả sử ta có biểu thức A % B:1) Toán tử % chỉ chấp nhận kiểu dữ liệu là số nguyên2) Nếu A%B bằng 0 thì có nghĩa là A chia hết cho B, hay B là ước số của A

Nếu A%2 ==0 A là số chẵnNếu A%2 !=0 A là số lẻ

chú ý : NếU B ==0 sẽ báo lỗi, tức là mẫu số phải khác không

Page 40: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Khai bao bien phai khoi tao gia tri luonint tong=0;

Page 41: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Số nguyên tố : là số chỉ có 2 ước số (chia hết cho 1 và chính nó)3,5,7 …

Số hoàn thiện : là số mà tổng các ước số không kể nó bằng chính nó6=1+2+3 ; 28 = 1+2+4+7+14

Số thịnh vượng : là số mà tổng các ước số không kể nó thì lớn hơn nó12<1+2+3+4+6

Page 42: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 43: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 44: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 45: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

(a)

(b)(e)

Page 46: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Học Hàm:Một số khái niệm cần nắm:- Prototype- Function Body- Truyền Tham Trị- Truyền Tham Biến- Tham số thực- Tham số hình thức- Parameter- Return type

Tại sao chúng ta phải viết chương trình dưới dạng hàmHàm đôi khi còn được gọi là Chương Trình Con

Lý do chính:- Được sử dụng lại coding đỡ mất thời gian- Dễ sửa chữa lỗi- Chia để trị : phân nhỏ chương trình lớn thành các

chương trình con để dễ xử lý

Prototype Function Header: Chỉ chứa tên hàm, các đối số và kết thúc bởi dấu ;

Prototype

Page 47: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Function body

Vậy từ khóa return có tác dụng gì trong hàm?Khi một hàm muốn trả về một giá trị nào đó thì chúng ta dùng return . Bất kỳ kiểu dữ liệu nào của hàm cũng có thể sử dụng return NGOẠI TRỪ kiểu void

SAIHàm có kiểu void đôi khi được gọi là Thủ Tục

- Tham số thực là gì ? - Tham số hình thức là gì?

Page 48: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Chỗ khai báo parameter tham số hình thức

Ngay chỗ gọi hàm, các đối số truyền vào tham số thực

Khi thực thi, chương trình sẽ sao chép địa chỉ của k cho a, của m cho b

Page 49: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Truyền tham trị và truyền tham b iến:

Hàm nào đóĐổi N = 8

N=5N=5

Truyền tham trị: Sau khi thoát khỏi hàm nó vẫn giữ giá trị gốc

Hàm nào đóĐổi N = 8

N=5N=8

Truyền tham biến: Sau khi thoát khỏi hàm, nó sẽ lấy giá trị bị thay đổi trong hàm

Page 50: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Gọi hàm truyền tham trị Gọi hàm truyền tham biến

Page 51: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 52: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Tìm số lớn nhất

Page 53: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Bài 33

Bài 48

Page 54: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 55: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 56: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 57: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Học về Mảng 1 chiều:Mảng là 1 đối tượng dùng để lưu trữ các phần tử có cùng 1 kiểu dữ liệuChỉ số mảng bắt đầu được tính từ 0 cho tới n-1Tức là nếu như mảng có 10 phần tử, thì vị trí sẽ được tính từ số 0 cho tới 9. Với 0 là vị trí của phần tử số 1, số 1 là vị trí của phần tử số 2 ….

9 0 8 7 10 50 N=6

i=0 i=1 i=2 i=3 i=4 i=5

Mảng M có 6 phần tử

M[0] M[4]M[i]

Là phần tử tại vị trí thứ i

Đối với duyệt mảng, người ta thường dùng vòng for, ít khi dùng vòng while, do.. while

Page 58: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Cách khai báo mảng 1 chiều như thế nào?Đã nói tới mảng thì ta phải nói tới khả năng lưu trữ tối đã của mảng, do đó ta thường khai báo 1 biến lưu trữ giá trị TỐI ĐA mà mảng có thể lưu trữ

Như vậy theo khai báo ở trên thì biến MAX có giá trị là 100

- Khai báo mảng : Kiểu_Dữ_Liệu Tên_Mảng [Số_phần_Tử_của_mảng] ;ví dụ: hãy khai bảo 1 mảng nguyên có 10 phần tử int M[10]; int Q[10]; Hãy khai bảo 1 mảng nguyên có MAX phần tử int P[MAX]; Hãy khai báo 1 mảng số thực có MAX phần tử float R[MAX]Như vậy khi duyệt mảng thì các chỉ số không được vượt quá hoặc bằng số phần tử của mảng

Page 59: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Cách nhập dữ liệu cho từng phần tử trong mảng như thế nào?Có 2 cách nhập dữ liệu cho từng phần tử trong mảng: - cách 1: nhập bằng tay từ bàn phím - cách 2: cho máy tự động nhậpChúng ta nên kết hợp hàm (hôm bữa học) để nhập và xuất mảng

Page 60: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Nhập mảng tự động bằng máy:

Để khởi tạo xuất ra các số ngẫu nhiên, ta phải viết hàm này trước:

Hàm trên có ý nghĩa là yêu cầu máy tính khởi động để tạo các số ngẫu nhiên : Tức là mỗi lần chạy chương trình thì nó sẽ tự động phát sinh ra các con số có giá trị khác nhau

**** nếu như không có dòng này thì mỗi lần chạy chương trình sẽ cho ra có số ngẫu nhiên GIỐNG NHAU.

Để lấy giá trị ngẫu nhiên , ta dùng công thức bên dưới:

rand()%n : Tức lấy lấy các giá trị ngẫu nhiên từ 0 cho tới n-1Như vậy nếu ta gọi rand()%100 : tức là lấy giá trị ngẫu nhiên từ 0 99Đề bài : Hãy xuất các số ngẫu nhiên từ -55 cho tới 150(-77 88) Rand()%n -77=88 n=166(3095) rand()%n +30=95n=66(-55150)Rand()%n -55 =150 n=206

Page 61: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Mảng ngẫu nhiên

Page 62: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Bài tập phần mảng 1 chiều:Bài 1: Viết chương trình cho phép nhập/ xuất 1 mảng bất kỳ và thực hiện các yêu cầu sau: a) Xuất ra các số lẻ trong mảng b) Xuất ra các số nguyên tố trong mảngc) Với K là 1 số nhập vào từ bàn phím, kiểm tra xem K xuất hiện bao nhiêu lần trong mảngd) Tính tổng tất cả các phần tử trong mảng*** Yêu cầu tất cả các câu ad phải dùng hàm để viết

Page 63: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 64: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Mảng 2 chiều:- Cách khao báo mảng 2 chiều như thế nào- Cách duyệt tất cả các phần tử trong mảng 2 chiều.Trường hợp đặc biệt: Ma Trận Vuông, giới hạn của chúng ta là học ma trận vuông, tức là mảng 2 chiều mà có số dòng và số cột bằng nhau

Kiểu_Dữ_Liệu Tên_Mảng [Số_dòng] [Số_cột] ;Ví dụ 1: int M[5][3]; Tức là khai báo 1 mảng 2 chiều tên là M, có 5 dòng, 3 cột tổng số phần tử trong mảng = 5*3 =15 phần tửVí dụ 2: float K[3][4]; khai báo 1 mảng 2 chiều tên là K có kiểu số thực, số dòng là 3, số cột là 4 tổng số phần tử là 4*3=12;- Tương tự như mảng 1 chiều, chỉ số của các phần tử được đánh dấu từ số 0 cho tới số dòng -1 hoặc số cột -1

Page 65: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

M[0][0]9

M[0][1]2

M[0][2]0

M[0][3]12

M[0][4]3

M[1][0]2

M[1][1]8

M[1][2]15

M[1][3]7

M[1][4]5

M[2][0]10

M[2][1]8

M[2][2]19

M[2][3]13

M[2][4]18

M[3][0]17

M[3][1]86

M[3][2]78

M[3][3]46

M[3][4]0

Giả sử ta có mảng M 2 chiều, có 4 dòng và 5 cột

Chiều duyệt theo cột, thường đặt tên là j

Chiều duyệt theo dòng, thường đặt tên là i

i =0

i =1

i =2

i =3

j =0

j =1

j =2

j =3

j =4

Tức là để truy suất 1 phần tử tại dòng thứ ivà tại cột thứ j thì ta viết: M[i][j]- Ví dụ, muốn lấy phần tử tại dòng 2, cột 3 thì ta viết M[2][3]

Thông thường, người ta sử dụng 2 vòn for lồng nhau để duyệt mảng 2 chiều. Vòng for ngoài duyệt theo dòng, vòng for trong duyệt theo cột

Page 66: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 67: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Ma Trận vuông : mảng 2chiều có số cột và số dòng bằng nhau

Cách khai báo sẽ thay đổi 1 ít so với mảng 2 chiều bình thường. Vì ma trận vuông là ma trận có số cột và số dòng bằng nhau, nên ta thường khai báo CẤP của mà trận thay vì khai báo số dòng, số cột.- Nếu nói ma trận vuông cấp 3 có 3*3 =9

phần tử- Tức là khi nói tới ma trận vuông thì người

ta nói tới cấp. Nếu ma trận là cấp N thì số phần tử của nó sẽ là N2

- Hãy viết các hàm để thực hiện yêu cầu:- + Xuất đường chéo chính- + xuất đường chéo phụ- + Xuất các số nguyên tố trên mỗi dòng- + Tính tổng các số chẵn trên đường chéo chính*** Đường chéo chính là đường chéo mà i=j*** Đường chéo phụ là đường mà i+j =n-1

Page 68: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Con trỏ và chuỗi ký tự- Cách khai báo con trỏ: Kiểu_dữ_liệu * tên_con_trỏ;- Khai báo con trỏ thì bắt buộc phải xin cấp phát bộ nhớ trước khi sử dụng tên_con_trỏ = new kiểu_dữ_liệu;

- Để lấy giá trị của 1 biến con trỏ dùng dấu * trước biến- để lấy địa chỉ ô nhớ mà con trỏ đang trỏ tới dùng dấu &- Khi 2 đối tượng cùng trỏ tới 1 địa chỉ của ô nhớ nào đó , thì bất kỳ sự thay đổi nào của 1

đối tượng nào đó đều làm đối tượng kia bị ảnh hưởng- Để cấp phát bộ nhớ cho con trỏ chúng ta dùng từ khóa new . Khi xin cấp phát bộ nhớ thì

bắt buộc phải kiểm tra hệ điều hành có cấp phát bộ nhớ cho con trỏ đó hay không/ Nếu HĐH cấp phát thành công thì ta mới sử dụng, còn không thì thoát chương trình+

Page 69: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

int *M;int n;cout<<"Nhap vao kich thuoc cua mang: ";cin>>n;M=new int[n];if(M==NULL){

cout<<"Cap phat khong duoc";exit(0);

}chú ý phải kiểm tra có bị NULL hay không Sau khi sử dụng con trỏ xong, bắt buộc phải hủy cấp phát bộ nhớ trước đó, nếu như chúng ta không hủy thì chương trình sẽ dễ bị Memory Leakgây ảnh hưởng tới tài nguyên của máy tính.Dùng từ khóa delete để hủy bộ nhớ

if(M!=NULL){

delete M;M=NULL;

}

Page 70: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 71: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Kiểu dữ liệu có cấu trúc:Ví dụ mở đầu: Trường đại học XYZ cần viết 1 phần mềm quản lý sinh viên, thông tin cần lưu trữ cho mỗi sinh viên bao gồm: mã sinh viên, họ tên, tuổi, quê quán, lớp học…..Trong trường hợp này chúng ta cần giải quyết vấn đề : 1 dữ liệu có khả năng chứa nhiều thông tin trong nóđể giải quyết vấn đề này ta dùng kiểu dữ liệu có Cấu TrúcCách khai báo: Từ khóa typedef dùng để định nghĩa một kiểu dữ liệu

mớiKhi ta khai báo: SinhVien teo;Thì teo chính là 1 đối tượng có kiểu dữ liệu là SinhViennó tương tự như ta khai báo int x ;

Vậy để lấy các thông tin bên trong của teo thì làm như thế nào?Những thông tin mà nằm bên trong 1 cấu trúc (struct) thì được gọi là các thuộc tính của cấu trúc đóTức là teo là 1 đối tượng cụ thể, teo có 4 thuộc tính đó là: ma, ten,dtb,lopđể truy suất tới các thuộc tính ta dùng:

tên_đối_tượng.thuộc_tính

Page 72: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Cách nhập dữ liệu có kiểu chuỗi từ bàn phím: dung gets

Page 73: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Viết chương trình quản lý sinh viên

Page 74: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

int r=strcmp (chuỗi_a , chuỗi_b);Nếu Chuỗi a = chuỗi b r=0Nếu Chuỗi a > chuỗi br=1Nếu chuỗi a < chuỗi b r=-1

Page 75: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Sắp xếp

Page 76: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Sắp xếp

Page 77: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Sắp xếp

Page 78: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Học về xử lý tập tin:Viết chương trình quản lý sản phẩm, mỗi sản phẩm cần lưu các thông tin: mã sản phẩm, tên sản phẩm, xuất xứ, số lượng, đơn giá, thành tiền. yêu cầu thực hiện các chức năng sau:1) Cho phép nhập xuất danh sách sản phẩm2) Thống kê những sản phẩm có đơn giá >=5003) Xuất ra những sản phẩm có xuất xứ từ trung quốc4) Sắp xếp sản phẩm theo xuất xứ tăng dần, nếu xuất

xứ trùng nhau thì sắp xếp theo số lượng giảm dần5) Lưu toàn bộ thông tin từ bộ nhớ xuống ổ cứng/

đọc toàn bộ thông tin từ ổ cứng lên bộ nhớ

Page 79: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 80: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 81: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 82: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 83: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Giải thích chi tiết phần lưu tập tin:#include <stdio.h> Dùng thư viện này để tương tác tập tin

FILE *fopen( const char *fname, const char *mode );

Dùng hàm fopen để mở 1 tập tin, có rất nhiều kiểu mở. Ở đây chúng ta học 2 kiểu đó là mở lên để ghi và mở lên để đọc

1 Mở lên để ghi , đối số thứ 2 của fopen nhập là “wb”

Đã tương tác tập tin thì thường xảy ra lỗi với tập tin: tập tin không tạo được do cấp quyền, do sai đường dẫn…, hoặc ổ đĩa chỉ đọc. Do đó ta luôn luôn kiểm tra con trỏ myFile có bị NULL hay không, nếu NULL tức là thất bại

Hàm fwrite dùng để lưu, đối số 1 là địa chỉ đối tượng cần lưu, đối số 2 là kích thước của từng phần tử , đối số thứ 3 là n số lượng phần tử muốn lưu, đối số thứ 4 là nơi lưu. Hàm trả về số phần tử bị ảnh hưởng trong tập tin.Phải đóng tập tin để kết thúc quá trình lưu

Page 84: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

1 Mở lên để đọc, đối số thứ 2 của fopen nhập là “rb”

Ở đây ta cho đọc tối đa MAX, nhưng chương trình sẽ tự động đọc những gì thực có trong tập tin và trả về số phần tử đọc được cho biết r. như vậy ta gán lại n=r là xongNhớ đóng tập tin khi đã đọc xong:

Page 85: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Viết chương trình quản lý nhân viên: gồm có mã , tên- sử dụng kiểu dữ liệu có cấu trúc- Cho phép nhập/ xuấtXuất theo yêu cầu dưới:

Page 86: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0

Bảng mã ký tự đặc biệt

Page 87: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0
Page 88: Môn Phương pháp lập trình, cài đặt bằng ngôn ngữ C, công cụ soản thảo C- Free 4.0