1 / 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 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

duard
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 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: - 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 int Dò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 F5 cout<<“\t”  xuất ra phím tab cout<<“\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 ơ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 - 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

  2. 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ẩy • Ví 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ôn • Ví dụ 2: Khai báo biến x, y, z có cùng kiểu số thực: • float x, y, z ;

  3. 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.

  4. - 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. PROCESS INPUT (dữ liệu đầu vào) OUTPUT (dữ liệu đầu ra) Cv=2*Pi*R Dt=Pi*r2 Bán kính R CV Dt

  5. Cv=4*a Dt=a*a Cạnh a Cv dt

  6. Các hàm toán học, lượng giác: #include<math.h> 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 2 2) 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 radian Cách đổi từ độ  radian : radian=độ*PI/180 Hà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)

  7. Học về toán tử 3 ngôi • Biểu thức điều kiện ? Biểu thức A : Biểu thức B • Nếu biểu thức điều kiện là đúng thì biểu thức A sẽ thực hiện • Nếu biểu thức điều kiện là sai thì biểu thức Bsẽ thực hiện • Ví 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ện • Mà 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

  8. 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ẻ”; }

  9. Mã ASCII – ép kiểu Trongmáytính, mỗimộtkýtự, mỗi 1 con sốđềucó 1 mãsốriêngkhôngtrùngnhau, mãsốnàyđượcgọilàmã ASCII Vídụ: Nhậpvàosố 1, hỏixemsố 1 cómã ASCII làbaonhiêu? Nhậpvàkýtự A, kýtự a. hỏimã ASCII lầnlượtlàbao nhiêu void 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ệu int 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

  10. 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=78 int s2 = tam%10 =78%10 =8 tam=tam/10 = 78/10=7 int s3 =tam%10 = 7%10 =7 tam =tam/10 =7/10= 0ngừng, ko tính nữa Suy ra số ngược của n = s1*100 + s2*10+s3 = 9*100+ 8*10+7 =900+80+7 =987

  11. Cấu trúc điều khiển if else Có 3 dạng cơ bản mà chúng ta thường gặp như sau: 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ện Chú ý: Đ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 true Ví 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ì đó”; } 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 Ví dụ 3: if(0) { cout<<“Không bao giờ vào đây được”; }

  12. Cấu trúc điều khiển if else Có 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

  13. Cấu trúc điều khiển if else Có 3 dạng cơ bản mà chúng ta thường gặp như sau: 3) Kết hợp if, else if , else if(đ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.

  14. Một số lưu khi so sánh: 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) So sánh lớn hơn hoặc bằng (>=) . So sánh nhỏ hơn hoặc bằng (<=) So sánh khác dùng != 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”; }

  15. Bài tập chương 3

  16. Bài tập chương 3

  17. Bài tập chương 3

  18. Bài tập chương 3

  19. Bài tập chương 3

  20. Cấutrúc Switch case Chấpnhậnkiểunguyên ( int, unsigned int, char) switch(điềukiên) { case giátrị 1: break; case giátrị 2: break; ……. default: //khitấtcảđiềukiệnđềukonhảyvàobấtkỳ case nàothìnósẽvào default } Cóthểkếthợpnhiều case lạivới: switch(điềukiện) { case giátrị 1 : case giátrị 2: break; } NHậpvào 1 thángbấtkỳ, kiểmtraxemthángcóbaonhiêungày, nếulàtháng 2 thìkiểmtranăm nhuần

  21. 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ày • Thá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ý 1 • Tháng 4,5,6 là quý 2 • Tháng 7,8,9 là quý 3 • Tháng 10,11,12 là quý 4 • Ví dụ 3: Nhập 2 số a,b, và • Ký tự ch • Nếu + cộng • trừ • Vân vân

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

  23. Cấu trúc vòng lặp : for, while, do … while Chú ý: các cấu trúc này rất khó và rất quan trọng 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ện 2. Thân vòng lặp thực hiện xong thì Bước nhảy sẽ thực hiện 3. 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

  24. Vòng lặp for Khởitạobiến Điềukiện Điều kiện sai Điều kiện đúng Bước nhảy làm Thân vòng lặp làm Kết thúc

  25. Thửchạytayvới n =5 • Khởitạo n =5, s =0; • Vòng for chạythựctếtrongmáynhưsau: • khởitạo i =1, kiểmtraliền • hỏi i<=n??  1 <=5 ???đúng  làm body for. • làm s=s+is=0+1=1 • 2) Body for làmxongthìbướcnhảylàm  làm i++  i=i+1=1+1=2, kiểmtraliền  hỏi i<=n ??  2<=5 ???đúng  làm body for: • làm s=s+I =1+2=3 • 3) Body làmxong  bướcnhảylàm i++i=3 • kiểmtraliền, kiểmtra i<=n??? 3<=5đúng làm body for: • làm s=s+I =3+3=6 • 4) Body xongthì b nhảylàmi++i=4, kiểmtraliền i<=n 4<=5??đúnglàm body for: • làm s=s+i=6+4=10 • 5) Body xongthìlàm b nhảy, i++i=5, kiểmtraliền i<=n 5<=5 ??đúng lam body for • s=s+i=10+5=15 • 6)Body xong, b nhảylàm i++i=6, kiểmtraliền i<=n 6<=5sai ngừng for • ta dc s=15 ThÔngthườngnếuchỉcó 1 vòng for, thìcácbiếnbêntrongcủa for ta đặttênlà i i++ làgì ? i++ tứclà ta muốntăng i lên 1 đơnvị . Bởivì i ++ tươngđươngvới i=i+1 Nhưvậynếu ta muốntăng i lên 2 lầnthìsao? i=i+2 hoặc i+=2

  26. Vìbướcnhảybằng 2 (i=i+2) vàkhởitạobắtđầutừ 2 nênchắcchắnluônlàsốchẵnnhanhhơn Nếubướcnhảybằng 1 (i++) thì ta kiểmtralàsốchẵnmớicộngdồn (i%2==0)

  27. Vòng lặp while và do …. While • 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 • 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ả 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.

  28. - 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

  29. #include<iostream.h> void main() { int n; int s=0; cout<<"Nhap n: "; cin>> n; for(inti=1; i<=n; i++) { s=s+i; } cout<<s; }

  30. xi n 1 pow(x,y)  tínhxy Vídụpow(3,4) 34 #include<math.h>

  31. X2*i n 1 X2*i+1) n 1 S=x; For(int i=1;i<=n;i++) { }

  32. 1 n 1

  33. unsigned int n; Giảsử ta cóbiểuthức A % B: Toántử % chỉchấpnhậnkiểudữliệulàsốnguyên Nếu A%B bằng 0 thìcónghĩalà A chia hếtcho B, hay B làướcsốcủa A Nếu A%2 ==0  A làsốchẵn Nếu A%2 !=0  A làsốlẻ chú ý : NếU B ==0 sẽbáolỗi, tứclàmẫusốphảikháckhông

  34. Khai bao bien phai khoi tao gia tri luon int tong=0;

  35. 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

  36. (a) (e) (b)

  37. 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àm • Hà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

  38. - Tham số thực là gì ? - Tham số hình thức là gì? 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 SAI Hàm có kiểu void đôi khi được gọi là Thủ Tục

  39. 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 Chỗ khai báo parameter  tham số hình thức

  40. Truyền tham trị và truyền tham b iến: N=5 N=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=8 N=5 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 Hàm nào đó Đổi N = 8

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

More Related