Đang tải... (xem toàn văn)
MĀC TIÊU CĂA MÔN HàC Sau khi học xong môn học này, ng°ßi học có kh¿ năng: * KiÁn thức: - Trình bày đ°ợc khái niệm về kỹ thuÁt lÁp trình máy tính; - Mô t¿ đ°ợc ngôn ngữ lÁp trình: cú pháp
Trang 2Khoa Công nghệ thông tin – TCN Quang Trung Trang 2
LâI GIàI THIàU
Giáo trình <Kỹ thuật lập trình” được tóm gọn lý thuyết căn bản, các bài thực
hành mẫu thiết thực, cung cấp các kiến thức bản nhất làm nền tảng cho chuyên ngành CNTT Nội dung giáo trình được trình bày qua các chương sau: tổng quan về kỹ thuật lâp trình, các khái niệm cơ bản, các lệnh có cấu trúc, hàm, kiểu mảng Giáo trình được trình bày đa dạng các bài tập và hươꄁng dẫn giải vơꄁi nhiều chủ đề khác nhau như căn bản về kỹ thuật lập trình, từ các bài ứng dụng thực tiễn và ngôn ngữ lập trình minh họa là C hoặc C#… Các bài tập được sắp xếp thứ tự cấp độ từ dễ đến mở rộng phw hợp cho người tự học, tự thực hành,…trình độ trung cấp trung cấp…làm nền tảng về kiến thức căn bản của chuyên ngành CNTT
Mặc dw cố gắng biên soạn, tuyển chọn các bài thực hành thiết thưc, dễ sử dụng … nhưng không thể tránh khỏi các thiếu sót ngoài mong muốn Rất mong bạn đọc gần xa góp ý để giáo trình được tốt hơn
Mọi góp ý vui lòng liên hệ:
Nguyễn Văn Lân
Email: nguyenlangroup@gmail.com – nguyenlan@live.com Website: www.ThuVienHocTap.Net
Điện thoại: 098 560 1838 Trân trọng giơꄁi thiệu đến bạn
Trang 3Khoa Công nghệ thông tin – TCN Quang Trung Trang 3
MĀC LĀC
LâI GIàI THIàU 2
GIÁO TRÌNH MÔN HàC 5
TÊN MÔN HàC: Kþ THUÀT LÀP TRÌNH 5
CH¯¡NG 1: TäNG QUAN V Kþ THUÀT LÂP TRÌNH 6
8.BiÅu dißn l°u đã 12
9.Môi tr°ãng viÁt mã nguãn 19
Trang 4Khoa Công nghệ thông tin – TCN Quang Trung Trang 4
Trang 5Khoa Công nghệ thông tin – TCN Quang Trung Trang 5
GIÁO TRÌNH MÔN HàC TÊN MÔN HàC: Kþ THUÀT LÀP TRÌNH
Mã mô đun/môn hác: MH 09
I VÞ TRÍ, TÍNH CHÂT CĂA MÔN HàC
- Vị trí: Mô đun đ°ợc bố trí sau khi học sinh học xong các môn học, mô đun
chung, tin văn phòng, căn b¿n về tin học
- Tính chÁt: Là môn học c¡ sá nghề bắt buộc, làm nền t¿ng cho các môn học,
mô đun khác
II MĀC TIÊU CĂA MÔN HàC
Sau khi học xong môn học này, ng°ßi học có kh¿ năng:
* KiÁn thức:
- Trình bày đ°ợc khái niệm về kỹ thuÁt lÁp trình máy tính;
- Mô t¿ đ°ợc ngôn ngữ lÁp trình: cú pháp, công dÿng cāa các câu lệnh; - Phân tích đ°ợc ch°¡ng trình: xác định nhiệm vÿ ch°¡ng trình;
- Thực hiện đ°ợc các thao tác trong môi tr°ßng phát triển phần mềm: biên
tÁp ch°¡ng trình, sử dÿng các công cÿ, điều khiển, thực đ¡n lệnh trợ giúp, gỡ rối, b¿y lỗi,v.v.;
- Mô t¿ đ°ợc bài toàn thực tiễn vào máy tính, dữ liệu vào, dữ liệu ra, xử lí
mã nguồn
* Kÿ nng:
- Thực hành viết ch°¡ng trình từ căn b¿n đến bài toàn thực tiễn; - Phân tích bài toán, xác định rõ dữ liệu vào-ra và xử lí mã nguồn; - Tìm lỗi, xử lí lỗi, đọc các thông báo cāa trình biên dịch;
- Thao tác sử dÿng các chăc năng cāa trình biên dịch; - Kỹ năng sử dÿng máy tính thành thạo h¡n;
- Phát triển t° duy, phân tích vÁn đề, phân tích bài toán cần xử lí * Nng lāc tā chă và trách nhiám:
- Rèn luyện lòng yêu nghề, t° thế tác phong công nghiệp, tính kiên trì, sáng
tạo trong công việc, trao đổi học hỏi bạn bè, làm việc nhóm, trách nhiệm với môn học, nội quy thực hành, kh¿ năng tự tìm hiểu
- Rèn luyện trách nhiệm tự học, tự tìm hiểu thêm về môn học
- Thực hiện an toàn sử dÿng máy tính, điện, trách nhiệm với trang thiết bị
phòng học
Trang 6Khoa Công nghệ thông tin – TCN Quang Trung Trang 6
- Bố trí làm việc khoa học đ¿m b¿o an toàn cho ng°ßi và ph°¡ng tiện học
tÁp
NÞI DUNG MÔN HàC
CH¯¡NG 1: TäNG QUAN V Kþ THUÀT LÂP TRÌNH Mã ch°¢ng: MH09-01
LÁp trình là sử dÿng ngôn ngữ để viết, hiểu các dòng lệnh, cÁu trúc dữ liệu
và thuÁt toán để gi¿i quyết bài toán
Mã ch°¡ng trình đ°ợc thông dịch và biên dịch để ch°¡ng trình sau cùng chạy đ°ợc
Thông dßch là quá trình kiểm tra và chuyển đổi câu lệnh t°¡ng ăng với ngôn
ngữ máy, thực hiện từng câu lệnh
Biên dßch là quá trình kiểm tra toàn bộ mã ch°¡ng trình và chuyển đoi thành
ch°¡ng trình thực thi đ°ợc
Ngôn ngÿ lÁp trình là hệ thống các ký hiệu tuân theo các qui °ớc về ngữ pháp
và ngữ nghĩa, dùng để xây dựng thành các ch°¡ng trình cho máy tính
ThuÁt toán: là tÁp hợp (dãy) hữu hạn cac chỉ thị (hành động) đ°ợc định nghĩa
rõ ràng nhằm gi¿i quyết một bài toán cÿ thể nào đó
Bao gãm 5 tính chÃt căa thuÁt toán:
Trang 7Khoa Công nghệ thông tin – TCN Quang Trung Trang 7
✓ Tính chính xác: quá trình tính toán hay các thao tác máy tính thực hiện là
chính xác
✓ Tính rõ ràng: các câu lệnh minh bạch đ°ợc sắp xếp theo thă tự nhÁt định
✓ Tính khách quan: đ°ợc viết bái nhiều ng°ßi trên máy tính nh°ng kết qu¿
- Cú pháp: đ°ợc hiểu bái ngôn ngữ đ°ợc định nghĩa nh° ngôn ngữ Pascal
định nghĩa cú pháp khác với ngôn ngữ C#,…
- Ngÿ ngh*a: Phạm vi tác động cāa các đối t°ợng trong khối lệnh cāa ch°¡ng
trình
- Tên: Các đối t°ợng đ°ợc khai báo trong mã ch°¡ng trình
Trang 8Khoa Công nghệ thông tin – TCN Quang Trung Trang 8
- Từ khoá (tên dùng riêng): Ngôn ngữ lÁp trình đ°ợc định danh bái những
tên dùng riêng, chúng ta không sử dÿng tên này để đặt tên biến Do vÁy, khi viết mã ch°¡ng trình chúng ta đặt tên đúng và dễ hiểu nhÁt không đ°ợc trùng tên từ khoá
- Hằng: Có giá trị không đổi trong quá trình thực hiện ch°¡ng trình
- BiÁn: Do ng°ßi dùng đặt, chúng dùng để l°u trữ giá trị và có thể thay đổi
Tuỳ thuộc vào ngôn ngữ và kiểu dữ liệu cāa biến có miền giá trị khác nhau Khi khai báo biến căn că vào phạm vi cāa cāa nó mà có biến cÿc bộ và toàn cÿc
- Chú thích: Khi viết mã ch°¡ng trình, chúng ta th°ßng chú thích để hiểu,
diễn gi¿i đối t°ợng khai báo, lí do thực hiện… Tuỳ thuộc vào ngôn ngữ mà có chú thích khác nhau nh° Pascal( { }, (*…*), C - C++ - Java – C# (//…từng dòng lệnh, /*… */) Visual Basic (8….)
Một số ngôn ngữ hiện đại đ°ợc sử dÿng rộng rãi để xây dựng phần mềm nh° Java, Visual Basic.NET, C# Ph°¡ng pháp lÁp trình mới là lÁp trình h°ớng đối t°ợng đ°ợc sử dÿng rộng rãi
Một số ngôn ngữ lÁp trình nh°: ngôn ngữ máy, hợp ngữ, ngôn ngữ bÁc cao
3. ThuÁt giÁi (Algorithm)
Là một dãy các thao tác xác định trên một đối t°ợng, sao cho sau khi th°c hiện một số hữu hạn các b°ớc thì đạt đ°ợc mÿc tiêu Theo R.A.Kowalski thì b¿n chÁt cāa thuÁt gi¿i:
ThuÁt giÁi = Logic + ĐiÃu khiÅn
Logic: Đây là phần khá quan trọng, nó tr¿ lßi câu hỏi "ThuÁt gi¿i làm gì, gi¿i quyết van đề gì?", những yếu tố trong bài toán có quan hệ với nhau nh° thế nào v.v… à đây bao gồm những kiến thăc chuyên môn mà bạn ph¿i biết để có thể tiến hành gi¿i bài toán
Điều khiển: Là cách thăc tiến hành áp dÿng thanh phần logic để gi¿i quyết vÁn đề
Các tính chÁt cāa thuÁt toán gồm 5 tính chÁt sau:
Tính chính xác: quá trình tính toán hay các thao tác máy tính thực hiện là chính xác
Tính rõ ràng: các câu lệnh minh bạch đ°ợc sắp xếp theo thă tự nhÁt định
Tính khách quan: đ°ợc viết bái nhiều ng°ßi trên máy tính nh°ng kết qu¿ ph¿i nh° nhau
Tính phổ dụng: có thể áp dÿng cho một lớp các bài toán có đầu vào t°¡ng tự nhau Tính kết thúc: hữu hạn các b°ớc tính toán
Trang 9Khoa Công nghệ thông tin – TCN Quang Trung Trang 9
4. Mßt sá ph°¢ng pháp lÁp trình
LÁp trình tuyÁn tính: Sử dÿng ngôn ngữ máy để lÁp trình và sử dÿng các khoá
cāa c¡ khí để nạp vào máy Ph°¡ng pháp rÁt khó khi viết mã và khó khăn trong việc kiểm soát ch°¡ng trình
LÁp trình cÃu trúc: Ch°¡ng trình gồm các hàm, thā tÿc riêng rẽ Giữa chúng có
thể độc lÁp hoặc giao tiếp với nhau Ph°¡ng pháp này đ¡n gi¿n cho việc lÁp trình nh°ng với những ch°¡ng trình phăc tạp khó khăn trong việc tổ chăc kiểu dữ liệu
LÁp trình h°áng đái t°ÿng: Ph°¡ng pháp này kế thừa từ ph°¡ng pháp lÁp trình
cÁu trúc kết hợp với trừu t°ợng hoá dữ liệu Ph°¡ng pháp này giúp cho việc lÁp trình nhanh chóng h¡n, kh¿ năng tái sử dÿng, kế thừa thích trong c¿ đội ngā lÁp trình
LÁp trình trāc quan: Đây là ph°¡ng pháp lÁp trình thực tế đ°ợc sử dÿng, kế
thừa những thành qu¿ từ các ph°¡ng pháp tr°ớc Với cách lÁp trình này ng°ßi thiết kế thÁy ngay kết qāa Một số ngôn ngữ nh° Java (sử dÿng các công cÿ hỗ trợ lÁp trình trực quan), Visual Basic.NET, Visual C# là những ví dÿ điển hình về ph°¡ng pháp lÁp trình này
Với sự phát triển cāa công nghệ phần mềm thì từ những ph°¡ng pháp lÁp trình trên sinh ra các nhánh lÁp trình mới nh° lÁp trình nhúng, lÁp trình với các thành phần có sẵn…
5. Ch°¢ng trình
Là một tÁp hợp các mô t¿, các phát biểu, nằm trong một hệ thống qui °ớc về ý nghĩa và thă tự thực hiện, nhằm điều khiển máy tính làm việc Theo Niklaus Wirth thì:
Ch°¢ng trình = ThuÁt toán + CÃu trúc dÿ liáu
Các thuÁt toán và ch°¡ng trình đều có cÁu trúc dựa trên 3 cấu trúc điều khiển
cơ bản:
* Tuần tự (Sequential): Cac b°ớc thực hiện tuần tự một cách chính xác từ trên
xuống, mỗi b°ớc chỉ thực hiện đúng một lần
* Chọn lọc (Selection): Chọn 1 trong 2 hay nhiều thao tác để thực hiện
* Lặp lại (Repetition): Một hay nhiều b°ớc đ°ợc thực hiện lặp lại một số lần
Muốn trá thành lÁp trình viên chuyên nghiệp bạn hãy làm đúng trình tự để có thói quen tốt và thuÁn lợi sau này trên nhiều mặt cāa một ng°ßi làm máy tính Bạn hãy làm theo các b°ớc sau:
Trang 10Khoa Công nghệ thông tin – TCN Quang Trung Trang 10
Tìm, xây dựng thuÁt gi¿i (trên giÁy) → viết ch°¡ng trình trên máy → dịch ch°¡ng trình → chạy và thử ch°¡ng trình
6. Các b°ác lÁp trình
Ng°ßi lÁp trình nắm tổng quát các b°ớc chính khi xây dựng một ch°¡ng trình ăng dÿng sẽ có ý nghĩa quan trọng trong tiến trình phát triển xây dựng phần mềm ăng dÿng Qua đó, giúp cho ng°ßi phát triển nắm rõ công việc, tiến trình thực hiện để tiếp nhÁn yêu cầu ban đầu đến triển khai, b¿o trì và phát trien các phiên b¿n cÁp nhÁt trong quá trình sử dÿng
Theo thßi gian, các b°ớc lÁp trình có thể có nhiều công đoạn khác nhau, với khuôn khổ tài liệu học tÁp, chúng tôi tóm gọn những b°ớc chính căn b¿n nhÁt trong tiến trình xây dựng phần mềm ăng dÿng
B°ác 1: Xác định mÿc tiêu cāa ch°¡ng trình cần xây dựng là gì; B°ác 2: Thiết kế ch°¡ng trình;
B°ác 3: Viết mã ch°¡ng trình nguồn; B°ác 4: Biên dịch;
B°ác 5: Chạy ch°¡ng trình;
B°ác 6: Kiểm tra và gỡ lỗi ch°¡ng trình; B°ác 7: B¿o trì và nâng cÁp ch°¡ng trình
Trang 11Khoa Công nghệ thông tin – TCN Quang Trung Trang 11
7. Xác đßnh IPO
IPO (Input-Process-Output) là cách xác định dữ liệu đ°a vào để hệ thống để xử
lí sau đó tr¿ kết qu¿ xử lí
Quy trình xử lý c¡ b¿n cāa máy tính gồm I-P-O
Ví dā minh háa: Máy tính bỏ túi khoa học mà học sinh th°ßng sử dÿng là có
chăc năng gi¿i ph°¡ng trình bÁc 2 với một ẩn số
VÁy thì, dữ liệu đ°a vào máy tính là các hệ số A,B,C Máy tính đã cài đặt sẵn ch°¡ng trình để xử lí gi¿i ph°¡ng tringh bÁc 2 với một ẩn số từ các hệ số A,B, C Ng°ßi sử dÿng chỉ quan tâm kết qu¿ cuối cùng là nghiệm cāa ph°¡ng trình x1, x2
Tóm tắt:
I: các hệ số số A, B, C
P: Máy tính đã cài đặt sẵn ch°¡ng trình để xử lí O: Nghiệm X1, X2
Input
Trang 12Khoa Công nghệ thông tin – TCN Quang Trung Trang 12
Nh° vÁy, câu hỏi đặt ra là máy tính đã cài đặt ch°¡ng trình xử lí bài toán nh° thế nào? Để gi¿i ph°¡ng trình bÁc 2 một ẩn này máy tính đã đ°ợc cài đặt ch°¡ng trình lÁp trình sẵn tích hợp vào máy tính bỏ túi đó Công việc này, ng°ßi lÁp trình ph¿i viết mã nguồn để gi¿i quyết bài toán này
Ví dā 1: Xác định Input, Process, Output cāa ch°¡ng trình tính tiền l°¡ng công
nhân tháng 10/2002 biết rằng l°¡ng = l°¡ng căn b¿n * ngày công
Input : l°¡ng căn b¿n, ngày công
Process : nhân l°¡ng căn b¿n với ngày công
8. BiÅu dißn l°u đã
L°u đồ thuÁt toán là công cÿ dùng để biểu diễn thuÁt toán, việc mô t¿ nhÁp (input), dữ liệu xuÁt (output) và luồng xữ lý thông qua các ký hiệu hình học Ph°¡ng pháp duyệt là: Duyệt từ trên xuống; Duyệt từ trái sang ph¿i
KÝ HIàU
Bắt đầu và kết thúc ch°¡ng trình Luồng xử lí
Kiểm tra điều kiện NhÁp
Trang 13Khoa Công nghệ thông tin – TCN Quang Trung Trang 13
XuÁt
Xử lí dữ liệu Giá trị tr¿ về Điểm ghéo nối
Trang 14Khoa Công nghệ thông tin – TCN Quang Trung Trang 14
CÃu trúc for/while CÃu trúc do while
Ví dā 3: NhÁp năm sinh cāa một ng°ßi Tính tuổi ng°ßi đó
Trang 15Khoa Công nghệ thông tin – TCN Quang Trung Trang 15
Ví dā 4: NhÁp 2 số a và b Tính tổng, hiệu, tính và th°¡ng cāa hai số đó
Ví dā 5: NhÁp tên s¿n phẩm, số l°ợng và đ¡n giá Tính tiền và thuế giá trị gia
tăng ph¿i tr¿, biết:
tiền = số l°ợng * đ¡n giá thuế giá trị gia tăng = 10% tiền
Trang 16Khoa Công nghệ thông tin – TCN Quang Trung Trang 16
Ví dā 6: NhÁp điểm thi và hệ số 3 môn Toán, Lý, Hóa cāa một sinh viên Tính
điểm trung bình cāa sinh viên đó
Trang 17Khoa Công nghệ thông tin – TCN Quang Trung Trang 17
Ví dā 7: NhÁp bán kính cāa đ°ßng tròn Tính chu vi và diện tích cāa hình tròn
đó
Ví dā 8: NhÁp vào 2 số nguyên Tính min và max cāa hai số đó
Trang 18Khoa Công nghệ thông tin – TCN Quang Trung Trang 18
Ví dā 9: Gi¿i và biện luÁn ph°¡ng trình: ax+b=0
Ví dā 10: Tính tổng: S = 1+ 2 + 3 +…+ n , với n>0
Trang 19Khoa Công nghệ thông tin – TCN Quang Trung Trang 19
9. Môi tr°ãng viÁt mã nguãn
Integrated Development Environment (IDE) là một phần mềm chăa tÁt c¿
những thă bạn cần để phát triển ăng dÿng nh° viết mã (coding) biên dịch (compiler), liên kết (linker) và gỡ lỗi (debug), xuÁt b¿n ăng dÿng (publish),…ch°¡ng trình cāa bạn
IDE căa Borland C++ 5.02 /Tubor C++:
Môi tr°ßng phát triển tích hợp IDE (Integrated Development Environment) Biên tÁp ch°¡ng trình nguồn (Trình EDIT)
Biên dịch ch°¡ng trình (Trình COMPILE) Chạy ch°¡ng trình nguồn (Trình RUNTIME) Sửa lỗi ch°¡ng trình nguồn (Trình DEBUG)
Phần này các em khám phần mềm khi thực hành, giáo viên h°ớng d¿n một số chăc năng cāa phần mềm Borland C++ 3.2 Một số yêu cầu cần thực hiện:
✓ Cài đặt phần mềm Borland C++ hoặc Tubor C++ ✓ Sử dÿng các Menu chăc năng
Trang 20Khoa Công nghệ thông tin – TCN Quang Trung Trang 20
✓ Má - l°u file, đóng môi tr°ßng soạn th¿o…
✓ Đặt tên File, sao chép file mã nguồn sang các thiết bị khác nh° ổ đĩa căng, USB…
Quá trình viết mã nguồn chạy ch°¡ng trình thì IDE sẽ chuyển theo trình tự:
Trang 21Khoa Công nghệ thông tin – TCN Quang Trung Trang 21
Chú ý: Với môi tr°ßng Windows 7, 10, 11 thì Borland C++ 5.02/ Tubor C++ không còn hỗ trợ để lÁp trình Do đó, bạn cần sử dÿng phiên b¿n Windows cũ h¡n hoặc tùy biến để chạy đ°ợc môi tr°ßng Windows mới hoặc sử dÿng IDE khác phù hợp nhÁt
IDE căa Dev C++:
Để Viết ch°¡ng trình C với Dev C++, tr°ớc hết chúng ta cần tạo một file mới để ghi mã nguồn ch°¡ng trình Hãy Chọn File/New/Source File (Hoặc Án Ctrl+N) để tạo một file mới nh° sau:3
Trang 22Khoa Công nghệ thông tin – TCN Quang Trung Trang 22
Hãy copy hoặc nhÁp mã nguồn này vào file vừa tạo, sau đó l°u lại file trên với tên helloworld.c tại một th° mÿc bÁt kỳ, ví dÿ nh° là D:\code\c\helloworld.c chẳng hạn, bằng cách Chọn File/Save (Hoặc Án Ctrl+S) để l°u file vừa viết
Hãy nhÁp tên file helloworld.c vào hộp Filename và chọn đuôi file c(đối với file C) trong hộp Save as Type , và sau đó nhÁn Save để hoàn tÁt quá trình l°u file Sau khi đã l°u file helloworld.c á trên, chúng ta sẽ tiến hành Biên dịch và chạy ch°¡ng trình C với Dev C++ bằng cách Chọn Execute/Compile & Run (Hoặc Án F11):
Trang 23Khoa Công nghệ thông tin – TCN Quang Trung Trang 23
IDE cāa Visual C++ (cāa bộ Visual Studio)
Visual Studio Code là một trình biên tÁp mã đ°ợc phát triển bái Microsoft dành cho Windows, Linux và macOS Nó hỗ trợ chăc năng debug, đi kèm với Git, có syntax highlighting, tự hoàn thành mã thông minh, snippets, và c¿i tiến mã nguồn Nó cũng cho phép tùy chỉnh, do đó, ng°ßi dùng có thể thay đổi theme, phím tắt, và các tùy chọn khác Visual Studio Code miễn phí và là phần mềm mã nguồn má
Trang 24Khoa Công nghệ thông tin – TCN Quang Trung Trang 24
10.Bài tÁp
1 Trình bày một số khái niệm nh° phần mềm là gì, các b°ớc xây dựng phần mềm ăng dÿng CNTT
2 Trình bày thuÁt toán là gì
3 Các cách biểu diễn thuÁt toán? ¯u và khuyết điểm cāa từng ph°¡ng pháp Cho ví dÿ minh họa
4 Liệt kê một số phần mềm ăng dÿng á môi tr°ßng Web, điện thoại, máy tính Windows… mà em đ°ợc biết
5 Hãy trình bày thuÁt toán (cách thăc gi¿i) với ph°¡ng trình một ẩn bÁc nhÁt ax +b=0
6 Hãy trình bày cách tính số tuổi mộ ng°ßi khi biết năm sinh cāa họ
Trang 25Khoa Công nghệ thông tin – TCN Quang Trung Trang 25
7 Trình bày cách xử lí bài toán: NhÁp 2 số a và b Tính tổng, hiệu, tính và th°¡ng cāa hai số đó
8 Trình bày cách xử lí bài toan: NhÁp tên s¿n phẩm, số l°ợng và đ¡n giá Tính tiền và thuế giá trị gia tăng ph¿i tr¿, biết:
tiền = số l°ợng * đ¡n giá thuế giá trị gia tăng = 10% tiền
9 Hãy trình giã ngữ mô t¿ trạng thái đèn tín hiệu giao thông với 3 trạng thái: Xanh-Vàng-Đỏ
Hãy xác đßnh IPO các bài toán sau:
10 Pha chế một ly cà phê sữa đá
11 Học sinh đi công chăng bằng tốt nghiệp THCS 12 Mang laptop thay ổ căng SSD hoặc thay bàn phím
13 NhÁp năm sinh cāa một ng°ßi Tính tuổi ng°ßi đó so với năm hiện tại 14 NhÁp 2 số a và b Tính tổng, hiệu, tính và th°¡ng cāa hai số đó
15 NhÁp tên s¿n phẩm, số l°ợng và đ¡n giá Tính tiền và thuế giá trị gia tăng ph¿i tr¿, biết rằng:
tiền = số l°ợng * đ¡n giá; thuế giá trị gia tăng = 10% tiền
16 NhÁp điểm thi và hệ số 3 môn Toán, Lý, Hóa cāa một sinh viên Tính điểm trung bình cāa sinh viên đó
17 NhÁp bán kính cāa đ°ßng tròn Tính chu vi và diện tích cāa hình tròn đó 18 NhÁp vào số xe (gồm 4 chữ số) cāa bạn Cho biết số xe cāa bạn đ°ợc
Trang 26Khoa Công nghệ thông tin – TCN Quang Trung Trang 26
26 Viết ch°¡ng trình nhÁp vào N số nguyên, tìm số lớn nhÁt, số nhỏ nhÁt 27 Tìm số lớn nhÁt trong 3 số
28 NhÁp số n kiểm tra số d°¡ng hay âm 29 Gi¿i ph°¡ng trình bÁc 2: ax2 + bx + c = 0
30 NhÁp các số a, b, c, d In ra màn hình số lớn nhÁt, số bé nhÁt
31 NhÁp số có ba chữ số, tính tích các chữ số cāa n Ví dÿ: n = 123 thì 1*2*3 = 6
32 Viết ch°¡ng trình nhÁp từ bàn phím số gồm 4 chữ số XuÁt ra màn hình các số tăng dân Ví dÿ 281 thì in ra màn hình 1 2 8
33 Viết ch°¡ng trình nhÁp vào 1 số từ 0 đến 9 In ra chữ số t°¡ng ăng Ví dÿ: nhÁp vào số 7, in ra "Bay"
34 NhÁp số nguyên d°¡ng N.Tính tổng bình ph°¡ng các số lẻ và tổng bình ph°¡ng các số chẵn đầu tiên (từ 1->N)
35 Viết ch°¡ng trình nhÁp chỉ số điện tháng hiện tại và tháng tr°ớc đó để tính
36 Viết ch°¡ng trình tính n!
37 NhÁp vào 6 số thực a, b, c, d, e, f Gi¿i hệ ph°¡ng trình sau :
38 Tính giá trị cāa biểu thăc S = 1*2*…*n = n! S = 1! + 2! + … + n!
Tính S = 1 + 2+ 3+ … + n (n>0)
Tính S = 12 + 22 + 32 + 42 + …+ n2 (n>0) 39 Tính giá trị biểu thăc, với n >0
40 Tính giá trị biểu thăc, với n >0
41 Tính giá trị biểu thăc, với n >0
Trang 27Khoa Công nghệ thông tin – TCN Quang Trung Trang 27
CH¯¡NG 2: CÁC KHÁI NIàM CN BÀN Mã ch°¢ng: MH09-02
❖ Giái thiáu:
Ch°¡ng này chúng ta cùng tìm hiểu các khái niệm về ngôn ngữ lÁp trình C, các thành phần căn b¿n cāa ngôn ngữ này Đây đ°ợc xem là ngôn ngữ nền t¿ng căn b¿n nhÁt để sử dÿng các ngôn ngữ hiện đại h¡n nh° C++, Java, C#,… Với ng°ßi mới bắt đầu sử dÿng ngôn ngữ lÁp trình thì tìm hiểu các thành phần căn b¿n cāa ngôn ngữ đóng vài trò quan trọng để tìm hiểu sâu h¡n các chā điểm khác nh° hàm lÁy dữ liệu, xuÁt dữ liệu, các thành phần cāa ngôn ngữ lÁp trình nh° từ khóa, khối lệnh, biến, quy °ớc đặt tên, phạm vi hoạt động cāa biến…
❖ Māc tiêu:
- Trình bày và sử dÿng đ°ợc hệ thống kí hiệu và từ khóa ngôn ngữ lÁp
trình C;
- Mô t¿ đ°ợc các kiểu dữ liệu;
- Trình bày đ°ợc và vÁn dÿng đ°ợc các loại biến, hằng biểu thăc cho từng
Ngôn ngữ lÁp trình C ra đßi trong những thÁp kỷ 60 và 70 để thiết kế phần
mềm hệ thống nh° hệ điều hành Unix Năm 1972 ngôn ngữ này do Ken Thompson và Dennis Ritchie phát triển tại phòng thí nghiệm Bell Telephone
Là ngôn ngữ lÁp trình có cÁu trúc và phân biệt chữ Hoa - th°ßng (case sensitive) và thuần chuẩn ANSI C
Ngôn ngữ này đ°ợc nhiều hãng phát triển thành các ngôn ngữ mới nh° C++, Visual C++…Giáo trình này chúng ta thực hành với ngôn ngữ C chuẩn á môi tr°ßng Borland C++ 3.1 (DOS) hoặc 5.02 (Windows)
¯u điểm cāa C
RÁt mạnh và linh động, có kh¿ năng thể hiện bÁt că ý t°áng nào
Trang 28Khoa Công nghệ thông tin – TCN Quang Trung Trang 28
Đ°ợc sử dÿng rộng rãi bái các nhà lÁp trình chuyên nghiệp
Có tính kh¿ chuyển, ít thay đổi trên các hệ thống máy tính khác nhau Rõ ràng, cô đọng
LÁp trình đ¡n thể, tái sử dÿng thông qua hàm
QUÁ TRÌNH THĀC THI MÃ NGUâN
Quá trình thực thi mã nguồn ngôn ngữ C nh° sau: 1 Ch°¡ng trình C (mã nguồn) đ°ợc gửi đến Preprocessor đầu tiên Preprocessor có trách nhiệm chuyển đổi các chỉ thị tiền xử lý thành các giá trị t°¡ng ăng Bộ tiền xử lý tạo ra một mã nguồn má rộng
2 Mã nguồn đ°ợc má rộng đ°ợc gửi tới trình Compiler biên dịch mã và chuyển đổi nó thành mã assembly
3 Mã assembly đ°ợc gửi đến Assembler để lắp ráp mã và chuyển đổi nó thành mã đối t°ợng Bây giß tệp hello.obj đ°ợc tạo ra
4 Mã đối t°ợng đ°ợc gửi đến Linker liên kết nó tới th° viện nh° các tệp header Sau đó, nó đ°ợc chuyển đổi thành mã thực thi Một tÁp tin hello.exe đ°ợc tạo ra
5 Mã thực thi đ°ợc gửi đến Loader nạp nó vào bộ nhớ và sau đó nó đ°ợc thực thi Sau khi thực hiện, output cāa ch°¡ng trình đ°ợc gửi đến console
Trang 29Khoa Công nghệ thông tin – TCN Quang Trung Trang 29
2. Các thành phÅn cn bÁn ngôn ngÿ C 1 Các kí hiáu
{ } Bắt đầu và kết thúc hàm hay khối lệnh
void main() {
} ; Kết thúc khai báo biến, một lệnh,
một lßi gọi hàm, hay khai báo nguyên m¿u hàm
int x; void
NhapMang(int a[], int &n);
2 Từ khóa
Từ khóa là từ có ý nghĩa xác định dùng để khai báo dữ liệu, viết câu lệnh… Trong C có các từ khóa sau:
register return short static struct signed sizeof switch typedef union unsigned void volatile while
Chú ý: Từ khóa ph¿i viết chữ th°ßng, nếu dùng Borland C++ thì chữ màu trắng
3 Chú thích
Trình biên dịch sẽ bỏ qua các chú thích trong mã ch°¡ng trình Chú thích một dòng:
//Chú thích một dòng Ví dÿ:
//Ham nay dung de nhap mang
void NhapMang(int a[], int &n); Chú thích nhiều dòng:
/*
Chú thích nhiều dòng */
Trang 30Khoa Công nghệ thông tin – TCN Quang Trung Trang 30
4 Khai báo Header - th° vián
Để sử dÿng các hàm, đối t°ợng đ°ợc cài đặt sẵn cāa ngôn ngữ C, chúng ta cần khai báo th° viện
Ví dÿ:
#include"stdio.h" #include"conio.h" #include"string.h" #include<stdlib.h> #include<dos.h> #include"math.h"
5 KiÅu dÿ liáu
Turbo C có 4 kiểu c¡ sá nh° sau:
Kiểu số nguyên: giá trị cāa nó là các số nguyên nh° 2912, -1706, … Kiểu số thực: giá trị cāa nó là các số thực nh° 3.1415, 29.12, -17.06, … Kiểu luÁn lý: giá trị đúng hoặc sai
Kiểu ký tự: 256 ký tự trong b¿ng mã ASCII
TT KiÅu dÿ liáu
(Type) th°ác Kích (Length)
MiÃn giá trß (Range)
1 2 3 4 5 6 7 8 9 10 11
unsigned char char
enum
unsigned int short int int
unsigned long long
float double
long double
1 byte 1 byte 2 bytes 2 bytes 2 bytes 2 bytes 4 bytes 4 bytes 4 bytes 8 bytes 10 bytes
0 đến 255 – 128 đến 127 – 32,768 đến 32,767
0 đến 65,535 – 32,768 đến 32,767 – 32,768 đến 32,767
0 đến 4,294,967,295 – 2,147,483,648 đến 2,147,483,647
3.4 * 10–38 đến 3.4 * 1038
1.7 * 10–308 đến 1.7 * 10308
3.4 * 10–4932 đến 1.1 * 104932
Trang 31Khoa Công nghệ thông tin – TCN Quang Trung Trang 31
6 Tên biÁn và khai báo biÁn
Một dãy ký tự dùng để chỉ tên một hằng số, hằng ký tự, tên một biến, một kiểu dữ liệu, một hàm một hay thā tÿc
Không đ°ợc trùng với các từ khóa và đ°ợc tạo thành từ các chữ cái và các chữ số nh°ng bắt buộc chữ đầu ph¿i là chữ cái hoặc _
Số ký tự tối đa trong một tên là 255 ký tự và đ°ợc dùng ký tự _ chen trong tên nh°ng không cho phép chen giữa các kho¿ng trắng
Cú pháp: Kiểu dữ liệu Tên biến;
Ví dÿ:
float f; //khai báo biến f kiểu dữ liệu float
int i; //khai báo biến i có kiểu dữ liệu int
long l; //khai báo biến l có kiểu dữ liệu là long
Ví dÿ: Khai báo và khái tạo int a, b, c;
a = 1; b = 2; c = 5; Hoặc:
int a = 1, b = 2, c = 5; Phạm vi cāa biến
Trang 32Khoa Công nghệ thông tin – TCN Quang Trung Trang 32
Khi khai báo và sử dÿng biến chúng ta cần xem xét phạm vi sử dÿng cāa nó Có hai lo¿i ph¿m vi căa biÁn:
Khai báo biến ngoài (biến toàn cÿc): Vị trí biến đặt bên ngoài tÁt c¿ các hàm, cÁu trúc Các biến này có ¿nh h°áng đến toàn bộ ch°¡ng trình Chu trình sống cāa nó là bắt đầu chạy ch°¡ng trình đến lúc kết thúc ch°¡ng trình
Khai báo biến trong (biến cÿc bộ): Vị trí biến đặt bên trong hàm, cÁu trúc… Chỉ ¿nh h°áng nội bộ bên trong hàm, cÁu trúc đó… Chu trình sống cāa nó bắt đầu từ lúc hàm, cÁu trúc đ°ợc gọi thực hiện đến lúc thực hiện xong
n = 2 + 3 * 5;
=> n = 2 + (3 * 5); a > 1 && b < 2
Trang 33Khoa Công nghệ thông tin – TCN Quang Trung Trang 33
% : lÁy phần d°áp dÿng trên các toán hạng có kiểu dữ liệu char, int, long * Thă tự °u tiên: Đ¿o dÁu +, – ( ) *, / , % +, –
Ví dā
10%4 = 2 (10 chia 4 d° 2); 9%3 = 0 (9 chia 3 d° 0) 3 * 5 + 4 = 19
<= : nhỏ h¡n hoặc bằng == : bằng
!= : khác
* Thă tự °u tiên: > , >= , < , <= == , !=
Trang 34Khoa Công nghệ thông tin – TCN Quang Trung Trang 34
Kết qu¿ cāa phép toán quan hệ là số nguyên kiểu int, bằng 1 nếu đúng, bằng 0 nếu sai Phép toán quan hệ ngoài toán hạng đ°ợc sử dÿng là số còn đ°ợc sử dÿng với kiểu dữ liệu char
Thă tự °u tiên giữa toán tử số học và toán tử quan hệ Toán tử số học Toán tử quan hệ
Ví dÿ:
4 > 10 → có giá trị 0 (sai) 4 >= 4 → có giá trị 1 (đúng) 3 == 5 → có giá trị 0 (sai) 2 <= 1 → có giá trị 0 (sai) 6 != 4 → có giá trị 1 (đúng)
6 – 3 < 4 → có giá trị 1 (đúng), t°¡ng đ°¡ng (6 – 3) < 4
–2 * –4 < 3 + 2 → có giá trị 0 (sai), t°¡ng đ°¡ng (–2 * –4) < (3 + 2)
Phép toán luÁn lý
! : NOT (phép phā định) &&: AND (phép và)
|| : OR (phép hoặc)
Toán hạng a Toán hạng b !a a && b a || b Khác 0
Khác 0 Bằng 0 Bằng 0
Khác 0 Bằng 0 Khác 0 Bằng 0
0 (sai) 0 (sai) 1 (đúng) 1 (đúng)
1 (đúng) 0 (sai) 0 (sai) 0 (sai)
1 (đúng) 1 (đúng) 1 (đúng) 0 (sai) * Thă tự °u tiên: ! && ||
Ví dÿ :
!(2 <= 1) → có giá trị 1 (đúng) 5 && 10 → có giá trị 1 (đúng) !6 → có giá trị 0 (sai)
1 && 0 → có giá trị 0 (sai) 1 || 0 → có giá trị 1 (đúng) * Thă tự °u tiên giữa các toán tử:
! Toán tử số học Toán tử quan hệ && ||
Phép toán trên bit (bitwise)
& : và (AND)
Trang 35Khoa Công nghệ thông tin – TCN Quang Trung Trang 35
| : hoặc (OR)
^ : hoặc loại trừ (XOR) >> : dịch ph¿i
<< : dịch trái ~ : đ¿o
Bit a Bit b ~a a & b a | b a ^ b 0
0 1 1
0 1 0 1
1 1 0 0
0 0 0 1
0 1 1 1
0 1 1 0 Ví dÿ:
a = 13 → đổi ra hệ nhị phân → 1101 b = 10 → đổi ra hệ nhị phân → 1010
1101 1101 1101 & 1010 | 1010 ^ 1010
= 1000 = 1111 = 0111
= 8 = 15 = 7(dạng thÁp phân) a = 1235 → đổi ra hệ nhị phân → 0100 1101 0011
b = 465 → đổi ra hệ nhị phân → 0001 1101 0001
0100 1101 0011 0100 1101 0011 0100 1101 0011 & 0001 1101 0001 | 0001 1101 0001 ^ 0001 1101 0001
i += 3 → i = 6 i = i + 3 i *= 3 → i = 9 i = i * 3
Phép toán tăng, giảm: ++, ––
Toán tử ++ sẽ cộng thêm 1 vào toán hạng cāa nó, toán tử –– sẽ trừ đi 1
Trang 36Khoa Công nghệ thông tin – TCN Quang Trung Trang 36
Ví du: ta có giá trị n = 6
+ Sau phép tính ++n hoặc n++, ta có n = 7 + Sau phép tính ––n hoặc n–– , ta có n = 5
* Sự khác nhau giữa ++n và n++, ––n và n––
+ Sau phép tính x = ++n + 2, ta có x = 9 (n tăng 1 cộng với 2 rồi gán cho x) + Sau phép tính x = n++ + 2, ta có x = 8 (n cộng với 2 gán cho x rồi mới tăng 1)
Đß °u tiên căa các phép toán
Đß °u tiên
Các phép toán Trình tā kÁt hÿp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
( ) [ ] ->
! ~ & * – ++ – – (type) sizeof
* / % + – << >>
< <= > >= == !=
& ^ | && || ? :
= += –= *= /= %= <<= >>= &= ^= |= ,
Trái sang ph¿i Ph¿i sang trái Trái sang ph¿i Trái sang ph¿i Trái sang ph¿i Trái sang ph¿i Trái sang ph¿i Trái sang ph¿i Trái sang ph¿i Trái sang ph¿i Trái sang ph¿i Trái sang ph¿i Ph¿i sang trái Ph¿i sang trái Trái sang ph¿i
3. NhÁp – xuÃt dÿ liáu 1 NhÁp dÿ liáu
Khai báo thư viện: #include <stdio.h> (standard input/output)
Cú pháp: printf(<chuỗi định dạng=, đối số);
Ý nghĩa: Kết xuÁt hiển thị dữ liệu đ°ợc định dạng
printf: tên hàm, phÁi viÁt bằng chÿ th°ãng
đối mÿc 1,…: là các mÿc dữ kiện cần in ra màn hình Các đối mÿc này có thể là biến, hằng hoặc biểu thăc ph¿i đ°ợc định trị tr°ớc khi in ra
Trang 37Khoa Công nghệ thông tin – TCN Quang Trung Trang 37
chuỗi định dạng: đ°ợc đặt trong cặp nháy kép (" "), gồm 3 loại: + Đối với chuỗi kí tự ghi nh° thế nào in ra giống nh° vÁy
+ Đối với những kí tự chuyển đổi dạng thăc cho phép kết xuÁt giá trị cāa các đối mÿc ra màn hình tạm gọi là mã định dạng Sau đây là các dÁu mô t¿ định dạng: %c : Ký tự đ¡n
%s : Chuỗi
%d : Số nguyên thÁp phân có dÁu
%f : Số chÁm động (ký hiệu thÁp phân) %e : Số chÁm động (ký hiệu có số mũ) %g : Số chÁm động (%f hay %g) %x : Số nguyên thÁp phân không dÁu %u : Số nguyên hex không dÁu
%o : Số nguyên bát phân không dÁu
l : Tiền tố dùng kèm với %d, %u, %x, %o để chỉ số nguyên dài (ví dÿ %ld) + Các ký tự điều khiển và ký tự đặc biệt
\n : Nh¿y xuống dòng kế tiếp canh về cột đầu tiên \t : Canh cột tab ngang
\r : Nh¿y về đầu hàng, không xuống hàng \a : Tiếng kêu bip
\\ : In ra dÁu \ \" : In ra dÁu " \' : In ra dÁu ' %%: In ra dÁu %
printf(<%f=, x); → Xuất ra 15.060000 printf(<%f=, 1.0/3); → Xuất ra 0.333333
Ví dā:
int a = 1706;
float x = 176.85;
printf(<%10d=, a);printf(<\n=);
Trang 38Khoa Công nghệ thông tin – TCN Quang Trung Trang 38
printf(<%10.2f=, x);printf(<\n=); printf(<%.2f=, x);printf(<\n=);
Ví dā: printf("Bai hoc C dau tien \n");
Trang 39Khoa Công nghệ thông tin – TCN Quang Trung Trang 39
Kết qu¿ in ra màn hình
Tong cua 2 so 7 va 4 la 11 _
KÁt quÁ in ra màn hình
6 1234 62 165 2 965 _
Số canh về bên ph¿i bề rộng tr°ßng
printf("%-7d%-7d%-7d.\n", a, b, c); printf("%-7d%-7d%-7d.\n", 165, 2, 965);
KÁt quÁ in ra màn hình
6 1234 62 165 2 965 _
Số canh về bên trái bề rộng tr°ßng
Ví dā: gi¿ sử float a = 6.4, b = 1234.56, c = 62.3
Trang 40Khoa Công nghệ thông tin – TCN Quang Trung Trang 40
Kết qu¿ in ra màn hình 6.40 1234.56 62.30 _
Số canh về bên ph¿i bề rộng tr°ßng 7 kí tự
Ví dā: gi¿ sử float a = 6.4, b = 1234.55, c = 62.34
printf("%10.1d%10.1d%10.1d.\n", a, b, c); printf("%10.1d%10.1d%10.1d.\n", 165, 2, 965);
KÁt quÁ in ra màn hình
6.4 1234.6 62.3 165.0 2.0 965.0 _
Số canh về bên ph¿i bề rộng tr°ßng
printf("%-10.2d%-10.2d%-10.2d.\n", a, b, c); printf("%-10.2d%-10.2d%-10.2d.\n", 165, 2, 965);
KÁt quÁ in ra màn hình
6.40 1234.55 62.34 165.00 2.00 965.00 _
Số canh về bên trái bề rộng tr°ßng
2 XuÃt dÿ liáu
Ý nghĩa: Hàm này có chăc năng lÁy dữ liệu từ thiết bị nhÁp
Khai báo thư viện: Th° viện sử dÿng: #include <stdio.h> (standard input/output) Cú pháp: scanf(“Chuỗi định dạng=, &đối số);
scanf: tên hàm, phải viết bằng chữ thường
Khung định dạng: đ°ợc đặt trong cặp nháy kép (" ") là hình ¿nh dạng dữ liệu nhÁp vào
đối mÿc 1,…: là danh sách các đối mÿc cách nhau bái dÁu phẩy, mỗi đối mÿc sẽ tiếp nhÁn giá trị nhÁp vào
Các đối số là tên các biến sẽ chăa giá trị nhÁp và đ°ợc đặt tr°ớc dÁu & Ví du: Cho a và b kiểu số nguyên
scanf(<%d=, &a); // NhÁp giá trị cho biến a scanf(<%d=, &b); // NhÁp giá trị cho biến b # scanf(<%d%d=, &a, &b);