(NB) Giáo trình Ngôn ngữ lập trình dùng cho học sinh hệ Cao Đẳng và Trung cấp của tất cả các nghề chuyên về Công Nghệ Thông tin trong trường Cao đẳng nghề Tỉnh BR – VT nhằm cung cấp cho sinh viên các thuật toán tổng quát, từ đó sinh viên sẽ từng bước cải tiến thuật toán để xây dựng được những chương trình hiệu quả và có tính ứng dụng cao. Ngoài ra,còn trang bị cho sinh viên những kiến thức làm tiền đề để chuẩn bị cho một số môn học tiếp theo, như: cấu trúc dữ liệu, lập trình hướng đối tượng, C,…
Trang 1
ỦY BAN NHÂN DÂN TỈNH BR – VT
TRƯỜNG CAO ĐẲNG NGHỀ
GIÁO TRÌNH
MÔ ĐUN LẬP TRÌNH CƠ BẢN
NGHỀ CÔNG NGHỆ THÔNG TIN TRÌNH ĐỘ CAO ĐẲNG VÀ TRUNG CẤP
Ban hành kèm theo Quyết định số: 01/QĐ-CĐN ngày 04 tháng 01 năm 2016
của Hiệu trưởng trường Cao đẳng nghề tỉnh Bà Rịa – Vũng Tàu
Bà Rịa – Vũng Tàu, năm 2016
Trang 3
LỜI GIỚI THIỆU
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 trong 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 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 khoa học máy tính.
Giáo trình Ngôn ngữ lập trình dùng cho học sinh hệ Cao Đẳng và Trung cấp của tất cả các nghề chuyên về Công Nghệ Thông tin trong trường Cao đẳng nghề Tỉnh
BR – VT nhằm cung cấp cho sinh viên các thuật toán tổng quát, từ đó sinh viên sẽ từng bước cải tiến thuật toán để xây dựng được những chương trình hiệu quả và có tính ứng dụng cao Ngoài ra,còn trang bị cho sinh viên những kiến thức làm tiền đề để chuẩn bị cho một số môn học tiếp theo, như: cấu trúc dữ liệu, lập trình hướng đối tượng, C#, …
Mục đích của giáo trình là trang bị cho học viên những kiến thức và kỹ năng: Phân tích được thuật toán Có được kỹ năng lập trình cấu trúc thông qua một số thuật toán quan trọng gồm: các kỹ năng về lập trình cấu trúc, mảng, chuỗi ký tự, sắp xếp và tìm kiếm, … Phân tích được một bài toán và thiết kế thuật giải cho bài toán đó Sử dụng các kiểu dữ liệu, các cấu trúc điều khiển, các giải thuật, khai báo và sử dụng hàm…
Trong qua trình biên soạn giáo trình, tác giả đã cố gắng cập nhật thông tin mới, đồng thời tham khảo nhiều giáo trình khác, nhưng chắc chắn sẽ không tránh khỏi những hạn chế nhất định Rất mong nhận được ý kiến đóng góp của các nhà chuyên môn, các anh chị đồng nghiệp và các bạn đọc để giáo trình được hoàn thiện hơn.
Bà Rịa – Vũng Tàu, ngày 02 tháng 01 năm 2016
Biên soạn
Nguyễn Thị Mai
Trang 4
MỤC LỤC TT TRANG BÀI 1: THUẬT TOÁN 1
1 Ví dụ: 1
2 Khái niệm: 1
3 Các đặc trưng của thuật toán 2
3.1 Liệt kê: 2
3.2 Dùng sơ đồ khối: 3
BÀI 2: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C 6
1 Lịch sử hình thành 6
2 Đặc điểm của ngôn ngữ c 7
3 Cấu trúc của một chương trình c 8
4 Một số ví dụ mẫu: 8
5 Cài đặt chương trình: 9
6 Khởi động chương trình 9
8 Thoát khỏi chương trình 10
BÀI 3: TRÌNH BÀY CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ LẬP TRÌNH C 11
1 Bộ ký tự, từ khóa và tên 11
1.1 Bộ ký tự: 11
1.2 Từ khóa 12
1.3 Tên 12
2 Các kiểu dữ liệu căn bản 13
2.1 Kiểu số nguyên (int): 13
2.2 Kiểu ký tự (char) 13
2.3 Kiểu dấu phẩy động 14
3 Hằng, biến, biểu thức 14
3.1 Hằng 14
3.2 Biến 16
3.3 Biểu thức 17
BÀI 4: SỬ DỤNG CÁC PHÉP TOÁN VÀ CÂU LỆNH NHẬP, XUẤT TRONG LẬP TRÌNH C 19
1 Các phép toán 19
1.1 Các phép toán toán học: 19
Trang 5
1.2 Các phép toán quan hệ và logic : 20
1.2.1 Các phép toán quan hệ : 20
1.2.2.Các phép toán logic : 21
1.2.3 Phép toán tăng giảm : 22
1.2.4 Các phép toán lấy địa chỉ biến 22
1.2.5 Chuyển đổi kiểu dữ liệu 22
1.2.6 Thứ tự ưu tiên các phép toán : 23
2 Các lệnh nhập, xuất dữ liệu: 24
2.1 Các lệnh xuất: 24
2.2 Các lệnh nhập: 25
2.3 Các hàm nhập xuất dữ liệu khác: 26
2.3.1.Hàm getch(): 26
2.3.2.Hàm gets 27
2.3.3.Hàm getchar 27
2.3 4 Hàm putchar 28
2.3.5.Hàm puts 28
BÀI 5: SỬ DỤNG CÂU LỆNH CÓ CẤU TRÚC ĐIỀU KIỆN 30
1 Lệnh có cấu trúc điều kiện if 30
1.1 Cấu trúc if dạng khuyết 30
1.1.1.Cú pháp: 30
1.1.2 Sự hoạt động: 31
1.1.3 Lưu đồ khối: 31
1.1.4 Bài tập 32
1.2.2 Cấu if dạng đầy đủ 34
1.2.1.Cú pháp: 34
1.2.2 Sự hoạtđộng: 34
1.2.3 Lưu đồ khối 34
1.1.4 Bài tập 35
2 Lệnh có cấu trúc lựa chọn switch case 36
2.1.Cú pháp: 36
2.2 Sự hoạt động: 36
2.3 Lưu đồ khối 37
2.4 Bài tập: 37
BÀI 6: SỬ DỤNG CẤU TRÚC VÒNG LẶP FOR 39
Trang 6
1.Cú pháp: 39
2 Sự hoạtđộng: 39
3 Lưu đồ khối 40
4 Bài tập: 40
BÀI 7: SỬ DỤNG CẤU TRÚC VÒNG LẶP WHILE 43
1 Cú pháp: 43
2 Sự hoạtđộng: 43
3 Lưu đồ khối 43
4 Bài tập: 44
BÀI 8: SỬ DỤNG CẤU TRÚC VÒNG LẶP DO WHILE 46
1.Cú pháp: 46
2 Sự hoạtđộng: 46
3 Lưu đồ khối 46
BÀI 9: SỬ DỤNG CÁC CÂU LỆNH BREAK, CONTINUE, GOTO 50
1 Lệnh break 50
2 Lệnh continue 51
3.Câu lệnh goto 52
BÀI 10 54
1 Khái niệm 54
2 Khai báo hàm 56
3 Kết quả trả về của hàm- lệnh return- lệnh exit 56
3.1 Kết quả trả về của một hàm 56
3.2 Lệnh return: dùng để thoát khỏi một hàm và có thể trả về một giá trị nào đó 57
BÀI 11: SỬ DỤNG HÀM ĐỊNH KIỂU DỮ LIỆU VÀ KHÔNG ĐỊNH KIỂU DỮ LIỆU 60
1 Khai báo hàm không định kiểu dữ liệu 60
2 Khai báo hàm có định kiểu dữ liệu 61
3 Bài tập: 62
BÀI 12: TRUYỀN THAM SỐ CHO HÀM 65
1 Cách truyền tham số cho hàm 65
2 Bài tập: 66
BÀI 13: NHẬP XUẤT DỮ LIỆU CHO MẢNG MỘT CHIỀU 68
1 Khái niệm 68
2 Khai báo mảng một chiều 68
Trang 7
3 Khởi tạo mảng 69
3.1 Khởi tạo mảng: 69
3.2 Chỉ số của mảng 70
3.3 Lấy địa chỉ của phần tử mảng một chiều 70
4.Nhập xuất dữ liệu cho các phần tử của mảng một chiều 70
BÀI 14: SỬ DỤNG MẢNG MỘT CHIỀU LÀM THAM SỐ CHO HÀM .72 1.Dùng mảng làm tham số cho hàm 72
2 Tìm kiếm phần tử trong mảng một chiều 74
2.2 Các bước tiến hành: 74
2.3 Giải thuật: 75
BÀI 15: SẮP XẾP MẢNG MỘT CHIỀU 79
1 Ý tưởng: 79
2 Các bước tiến hành như sau : 79
3 Giải thuật: 80
BÀI 16: NHẬP XUẤT CHUỖI KÝ TỰ 83
1 Khái niệm 83
2 Khai báo biến chuỗi 92
2.1 Khai báo theo mảng 83
2.2 Vừa khai báo vừa gán giá trị 84
3 Vào ra với xâu ký tự 84
3.1 Nhập chuỗi từ bàn phím 84
3.2 Xuất chuỗi lên màn hình 84
BÀI 17: THAO TÁC TRÊN CHUỖI KÝ TỰ 86
1 Các phép toán trên chuỗi ký tự: 86
2 Bài tập 90
TÀI LIỆU THAM KHẢO 92
Trang 8
CHƯƠNG TRÌNH MÔ ĐUN LẬP TRÌNH CƠ BẢN
Mã số mô đun : MĐ13
VỊ TRÍ, TÍNH CHẤT CỦA MÔ ĐUN:
- Vị trí của Mô đun: được bố trí sau khi học xong môn tin học văn phòng
- Tính chất: Mô đun này yêu cầu phải có tư duy logic và kiến thức về toán
MỤC TIÊU MÔ ĐUN:
- Phân tích và xây dựng được thuật toán
- Khai báo được hằng và biến dùng trong chương trình
- Trình bày được các lệnh nhập xuất và các phép toán trong lập trình c
- Trình bày và vẽ được lưu đồ thuật toán của cấu trúc điều khiển vầ cấu trúc lặp
- Trình bày được hàm và kết quả trả về của một hàm
- Trình bày được các kiểu dữ liệu có cấu trúc điều kiện
- Sử dụng câu lệnh nhập xuất vào trong các bài tập tính toán
- Sử dụng câu lệnh có cấu trúc điều khiển và cấu trúc lặp vào trong các bài tập
- Vận dụng hàm vào trong các chương trình
- Sử dụng các kiểu dữ liệu có cấu trúc điều kiện vào trong các bài tập
- Viết được các chương trình
- Biên dịch, kiểm tra và sửa được các lỗi chương trình
- Chạy được chương trình và kiểm nghiệm được kết quả
- Có tinh thần trách nhiệm, ý thức tổ chức kỷ luật, tác phong công nghiệp, tinhthần hợp tác trong công việc
- Có ý chủ động, độc lập trong công việc, tự học cập nhật kiến thức, nâng caotrình độ chuyên môn
- Rèn luyện tính cẩn thận, kiên trì, sáng tạo, độc lập và hoạt động nhóm
- Bảo đảm an toàn và vệ sinh cho người và thiết bị trong phòng máy.
NỘI DUNG CỦA MÔ ĐUN:
Trang 9
STT Tên các bài trong mô đun Thời gian Hình thức giảng dạy
Trang 10
3 Trình bày các thành phần cơ bản của ngôn ngữ lập
4 Sử dụng các phép toán và câu lệnh nhập, xuất
11 Sử dụng hàm định kiểu dữ liệu và không định kiểu dữ liệu 5 Tích hợp
14 Sử dụng mảng một chiều làm tham số cho hàm 5 Tích hợp
Trang 12BÀI 1 THUẬT TOÁN Giới thiệu:
Khi chứng minh hoặc giải một bài toán trong toán học, ta thường dùngnhững ngôn từ toán học và sử dụng những phép suy luận toán học như phép suy
ra, tương đương Thuật toán là một phương pháp thể hiện lời giải bài toán nêncũng phải tuân theo một số quy tắc nhất định Ðể có thể truyền đạt thuật toán
giới thiệu một cách tổng quan về thuật toán
Mục tiêu:
- Giới thiệu về thuật toán
- Trình bày được các đặc trưng của thuật toán
- Nêu được các phương pháp biểu diễn của thuật toán
- Rèn luyện tính cẩn thận, kiên trì, sáng tạo
- Bảo đảm an toàn và vệ sinh cho người và thiết bị trong phòng máy
Nội dung:
1 Ví dụ:
Xét các yêu cầu sau :
- Bài1: Giải phương trình bậc hai ax2+bx+c=0
- Bài 2: Viết một dòng chữ ra màn hình máy tính
- Bài3: Quản lý các cán bộ trong một cơ quan
- Bài 4: Tìm ước chung lớn nhất của hai số nguyên dương a và b
- Bài5: Xếp loại học tập các học sinh trong lớp
àTrong các yêu cầu trên, yêu cầu nào được xem như là một bài toán?
Trang 13
- Input : Các số thực a,b,c (a ≠ 0)
- Output : Số thực x thỏa : ax2+bx+ c = 0
Ví dụ 2 : Tìm giá trị nhỏ nhất của các số trong một dãy số.
- Input : Các số trong dãy số
- Output : Giá trị nhỏ nhất trong dãy số
Ví dụ 3 : Xếp loại học tập các học sinh trong lớp
- Input : Bảng điểm của học sinh.
- Output : Bảng xếp loại học tập.
Một bài toán được cấu tạo bởi 2 thành phần cơ bản :
3 Các đặc trưng của thuật toán
Có 2 cách mô tả thuật toán:
3.1 Liệt kê:
Nêu ra tuần tự các thao tác cần tiến hành
Ví dụ : Tìm nghiệm phương trình bậc nhất tổng quát : ax + b = 0 (ã)
Giải toán thông thường:
- Nếu a = 0 thì (ã) không phải là pt bậc nhất
+ Nếu b = 0 thì (ã) vô số nghiệm
+ Nếu b ≠ 0 thì (ã) vô nghiệm
- Nếu a ≠ 0 thì (ã) có nghiệm x = -b/a
Liệt kê :
Hướng dẫn các thao tác cho máy thực hiện để tìm ra lời giải
Bài toán
Input Bằng cách nào? Output
Giải bài toán
Thuật toán
Trang 14
- Bước 1 : Nhập a, b
- Bước 2 : Nếu a = 0 thì quay lại bước 1, ngược lại thì qua bước 3
- Bước 3 : Gán cho x giá trị -b/a, rồi qua bước 4
- Bước 4 : Đưa ra kết quả x và kết thúc
3.2 Dùng sơ đồ khối:
Dùng một số biểu tượng thể hiện các thao tác
- Trong sơ đồ khối, người ta dùng một số biểu tượng thể hiện các thao tác như :
Bảng 1.1: Bảng các ký hiệu biểu diễn trong thuật toán
Ví dụ 1: Tìm nghiệm phương trình bậc nhất tổng quát : ax + b = 0
Trang 15
Lưu ý:
Ta cần diễn tả thuật toán bằng một ngôn ngữ sao cho máy tính có thể hiểu và
thực hiện được, ngôn ngữ đó gọi là ngôn ngữ lập trình Kết quả diễn tả thuật toán như vậy gọi là chương trình.
- Ví dụ 2 : vẽ sơ đồ giải phương trình bậc 2 a*x+bx+c=0(a#0)
Trang 16
Câu hỏi, bài tập:
1.1 Lưu đồ là phương pháp hình thức giúp diễn đạt một giải thuật, trong đó….:
a Hình ô van dùng để bắt đầu và kết thúc chương trình
b Hình thoi được dùng để điều khiển lựa chọn(hay kiểm tra điều kiện)
c Hình chữ nhật được dùng để xử lý, tính toán hoặc gán
d Tất cả các câu trên đều đúng
1.2 Trình bày các đặc trưng và các ký hiệu của thuật toán
1.3 Viết thuật toán nhập vào một số nguyên dương a kiểm tra xem đó là số chẵnhay là số lẻ
1.4 Viết thuật toán nhập vào 2 số nguyên a,b Tìm giá trị lớn nhất của hai số đó
Yêu cầu đánh giá
- Trình bày được khái niệm thuật toán và nêu được các đặc trưng của thuật toán
- Trình bày được các ký hiệu để biểu diễn trong sơ đồ thuật toán
- Sử dụng được thuật toán liệt kê và sơ đồ khối vào trong các bài toán
Trang 17
BÀI 2 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C
Giới thiệu:
Khoảng cuối những năm 1960 đầu 1970 xuất hiện nhu cầu cần có các ngôn ngữbậc cao để hỗ trợ cho những nhà tin học trong việc xây dựng các phần mềm hệthống, hệ điều hành Do vậy ngôn ngữ lập trình C cũng ra đời từ đây Bài họcnày sẽ giới thiệu một cách tổng quan về ngôn ngữ lập trình C
Mục tiêu:
- Mô tả lịch sử hình thành và phát triển của ngôn ngữ C
- Trình bày được cấu trúc của một chương trình C
- Thực hiện được cài đặt, khởi động, soạn thảo và thoát khỏi chương trình C
- Rèn luyện tính cẩn thận, kiên trì, sáng tạo
- Bảo đảm an toàn và vệ sinh cho người và thiết bị trong phòng máy
Nội dung:
1 Lịch sử hình thành
Ngôn ngữ C do Brian W.Kernighan và Dennis M.Ritchie phats triển vàođầu những năm 70 tại phòng thí nghiệm BELL( Hoa kỳ) với mục đích ban đầu
là để phát triển hệ điều hành Unix Bối cảnh ra đời xuất phát từ nhu cầu cần phải
có một ngôn ngữ lẩptình hệ thống thay thế cho hợp ngữ Assembly vốn nặng nề,
độ tin cậy thấp và rất khó chuyển đổi giữa các hệ máy tính khác nhau
Phần lớn các ý tưởng quan trọng nhất của C xuất phát từ một ngôn ngữ cótrước đó với tên gọi BCPL, do Martin Richards nghiên cứa Anh hưởng củaBCPL đối với c gián tiếp thông qua ngôn ngữ B, do Ken Thompson viết năm
1970 do hệ Unix, chạy trên họ máy tính PDP-7
Ngoài ra C được dùng để viết hệ điều hành Unix( Hiện nay trên 90%chương trình nguồn của hệ điều hành Unix được viết bằng C, chưa đầy 10%bằng hợp ngữ) , người ta nhanh chóng nhận ra sức mạnh của C trong việc xử lýcác vấn đề hiện đại của tin học: xử lý con số, văn bản, cơ sở dữ liệu, lập trình
Trang 18+ Năm 1983 một tiểu ban của viện tiêu chuản quốc gia mỹ (ANSI) được thànhlập nhằm đề xuất ra một chuẩn cho ngôn ngữ C.
+ Năm 1988 chuẩn ANSI C chính thức được ban hành Chuẩn này bao gồm các
mô tả về ngôn ngữ theo Brian W.Kernighan và Dennis M.Ritchievà qui định cácthư viện chuẩn của ngôn ngữ C, nhờ đó tăng tính khả chuyển của chương trìnhviết bằng C
+ Trong thế giới máy vi tính có các hệ chương trình dịch C nổi tiếng như:
Turbo C, Borland C của Borland Inc MSC, Vc của Microsoft Corp Lattice C củaLattice
+ Sự phát triển của ngôn ngữ lập trình trong những năm 80 đã đưa đến phongcách lập trình hướng đối tượng, Một trng những ngôn ngữ rất được ưa dùng làC++, một bổ sung mới các yếu tố hướng đối tượng vào ngôn ngữ C
2 Đặc điểm của ngôn ngữ c
C gồm các từ khóa Những từ khóa này kết hợp với cú pháp của C hìnhthành ngôn ngữ C Nhưng nhiều trình biên dịch cho C đã thêm vào những từkhóa dùng cho việc tổ chức bộ nhớ ở những giai đoạn tiền xử lý nhất định
Vài quy tắc khi lập trình C như sau :
- Tất cả từ khóa là chữ thường (không in hoa)
- Ðoạn mã trong chương trình C có phân biệt chữ thường và chữ hoa Ví dụ : do
while thì khác với DO WHILE
- Từ khóa không thể dùng cho các mục đích khác như đặt tên biến (variablename) hoặc tên hàm (function name)
Trang 19
- Hàm main() luôn là hàm đầu tiên được gọi đến khi một chương trình bắt đầuchạy (chúng ta sẽ xem xét kỹ hơn ở phần sau)
3 Cấu trúc của một chương trình c
#include <stdio.h>:khai báo sử dụng thư viện xuất/nhập chuẩn (standard I/O
library) Các thư viện khác: string, time, math,conio.h, iostream.h…
main():
- Chương trình C được chia nhỏ thành những đơn vị gọi là hàm
- Cho dù có bao nhiêu hàm trong chương trình, Hệ điều hành luôn trao quyềnđiều khiển cho hàm main() khi một chương trình C được thực thi
- Theo sau tên hàm là dấu ngoặc đơn
- Dấu ngoặc đơn có thể có chứa hay không chứa những tham số
- Dấu phân cách {…}: mở và đóng một khối mã
- Dấu kết thúc câu lệnh ;: Một câu lệnh trong C được kết thúc bằng dấu chấmphẩy ;
- Trình biên dịch C không hiểu việc xuống dòng, khoảng trắng hay tab
- Một câu lệnh không kết thúc bằng dấu chấm phẩy sẽ được xem như dòng lệnhlỗi trong C
- //: Dòng chú thích: Những chú thích thường được viết để mô tả công việc củamột lệnh đặc biệt, một hàm hay toàn bộ chương trình Trình biên dịch sẽ bỏ quaphần chú thích
+ Trong trường hợp chú thích nhiều dòng, nó sẽ bắt đầu bằng ký hiệu /* và kếtthúc là */
int n;
n=(1/3)*3;
printf("%d",n); getch();
Trang 20- Chạy file cài đặt DEV-C++ (file devcpp.exe) Làm theo hướng dẫn của máy
- Vào menu "Tools" chọn "Compiler Options"
- Vào tab "Settings" tab, nhấn vào "Linker" ở khung bên trái và thay đổi thông
số "Generate debugging information" sang "Yes":
- Nhấn OK
Hình 2.1: Hộp hội thoại cài đặt Dev C++
6 Khởi động chương trình
Khởi động chương trình : Start/ programs / DevC++
7 Soạn thảo chương trình
Vào file/ new/ source Flie/ Xuất hiện khung cửa số để soạn thảo chương trình
Hình 2.2: Hộp hội thoại mở màn hình soạn thảo Dev C++
Trang 21
8 Thoát khỏi chương trình
Thoát khỏi DevC++
Dùng File/Exit hoặc Alt-X
Câu hỏi, bài tập:
2- Chạy chương trình để kiểm tra kết qủa
3- Biên dịch chương trình theo ngôn ngữ
4- Tìm một giải thuật để giải bài toán
c Hàm main() là hàm được gọi cuối cùng khi chương trình chạy
d Từ khóa được dùng để đặt tên biến , tên hàm
Yêu cầu đánh giá
- Trình bày đặc điểm của ngôn ngữ C
- Trình bày được cấu trúc một chương trình C
- Trình bày được cách biên dịch, chạy một chương trình C
Trang 22
BÀI 3 TRÌNH BÀY CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ LẬP
TRÌNH C Giới thiệu:
Trong ngôn ngữ lập trình gồm có nhiều yếu tố để xây dựng nên mộtchương trình Đó là những yếu tố nào, xây dựng dựa trên quy tắc gì? Bài này sẽgiới thiệu một cách tổng quan về các thành phần cơ bản trong ngôn ngữ C
Mục tiêu:
- Nêu và sử dụng được hệ thống kí hiệu và từ khóa
- Nêu và phân tích được các kiểu dữ liệu
- Phân tích và vận dụng được các loại biến, hằng biểu thức cho từng chươngtrình cụ thể
-Áp dụng các các bộ tự khóa, biến, hằng, biểu thức vào trong các bài tập
- Rèn luyện tính cẩn thận, kiên trì, sáng tạo, độc lập và hoạt động nhóm
- Bảo đảm an toàn và vệ sinh cho người và thiết bị trong phòng máy
- Ký tự gạch nối _ (chú ý phân biệt dấu - )
- Dấu cách ( space) : dùng để phân biệt các từ :
Ví dụ : lop Học( 7 kí tự) - LopHoc( 6 kí tự)
Chú ý :
Khi viết chương trình, ta không được sử dụng bất kỳ ký tự nào khác ngoàicác ký tự trên
Trang 23
1.2 Từ khóa
Từ khoá là những từ được sử dụng để khai báo các kiểu dữ liệu, để viết các toán
tử và các câu lệnh Bảng dưới đây liệt kê các từ khoá của lập trình C :
Bảng 3.1: Các từ khóa trong ngôn ngữ lập trình C
ý nghĩa và cách sử dụng của mỗi từ khoá sẽ được đề cập sau này, ở đây ta cầnchú ý :
- Không được dùng các từ khoá để đặt tên cho các hằng, biến, mảng, hàm
- Từ khoá phải được viết bằng chữ thường, ví dụ : viết từ khoá khai báo kiểunguyên là int chứ không phải là INT
1.3 Tên
Là 1 dãy kí tự bắt đầu bằng chữ hoặc ký tự gạch dưới, theo sau là chữ cái,chữ số hoặc ký tự gạch nối (-)
- Tên : dùng làm tên hằnG, tên biến , nhãn , tên hàm
Ví dụ : Tên đúng : _abc, Delta_1, BETA.
Tên sai : 1xyz ( vì bắt đầu là 1 chữ số )
- Ðặt chữ hoa cho các hằng, chữ thường cho các đại lượng còn lại(biến, hàm )
- Nên đặt 1 cách gợi nhớ ( 8 kí tự đầu là có nghĩa và tuỳ thuộc chương trình )
Trang 24
2 Các kiểu dữ liệu căn bản
2.1 Kiểu số nguyên (int): Trong C cho phép sử dụng các kiểu số nguyên sau:
Bảng 3.2: Bảng các ký hiệu biểu diễn kiểu số nguyên
2.2 Kiểu ký tự (char)
Một giá trị kiểu ký tự (char) chiếm 1 byte trong bộ nhớ và biểu diễn một
ký tự thông qua bảng mã ASCII
Có hai kiểu ký tự (char) sau:
Bảng 3.3: Bảng các ký hiệu biểu diễn kiểu ký tự
diễn
2.3 Kiểu dấu phẩy động
Trong C sử dụng ba loại giá trị dấu phẩy động: float (độ chính xác đơn),double và long double (độ chính xác kép)
Bảng 3.4: Bảng các ký hiệu biểu diễn kiểu dấu phẩy động
Trang 25Là một giá trị bất biến trong chương trình không thay đổi, không biến đổi.
Các loại hằng được sử dụng trong C tương ứng với các kiểu dữ liệu nhất định
- Trong C, thường có các loại hằng sau:
Hằng số thực:
Trong giá trị có dấu chấm thập phân, hoặc ghi dưới dạng số có mũ, vàđược lưu theo kiểu float, double, long double Ví dụ: 1.2 , 2.1E -3 (2.1E-3=0.0021) hoặc 3.1e-2 (3.1e-2=0.031)
Hằng ký tự
- Một hằng kiểu ký tự được viết trong dấu ngoặc đơn (' ) như 'A' hoặc 'z'
- Hằng ký tự 'A' thực sự đồng nghĩa với giá trị nguyên 65, là giá trị trong bảng
mã ASCII của chữ hoa 'A' (Như vậy giá trị của hằng chính là mã ASCII của nó).Ðối với một vài hằng ký tự đặc biệt, ta cần sử dụng cách viết thêm dấu \ , như '\t'tương ứng với phím tab:
Trang 26Là chuỗi ký tự nằm trong cặp dấu nháy kép " " Các ký tự này cũng có thể
là các ký tự được biểu diễn bằng chuỗi thoát
Ví dụ: "Turbo C", "Ngôn ngữ C++ \n\r"
Một hằng chuỗi được lưu trữ tận cùng bằng một ký tự Nul (\0), ví dụ chuỗi "Turbo C" được lưu trữ trong bộ nhớ như sau:
Cách định nghĩa hằng sử dụng trong chương trình
Với các giá trị hằng thường được dùng trong một chương trình ta nên địnhnghĩa ở đầu chương trình (sau các dòng khai báo những thư viện chuẩn) theo cúpháp:
#define <tên hằng><giá trị>
Trang 27Khởi đầu cho các biến
Ngay trên dòng khai báo ta có thể gán cho biến một giá trị Việc làm này gọi
là khởi đầu cho biến
Ví dụ: int a,b=6,d=1;
Truy xuất đến địa chỉ của biến
Một số hàm của C dùng đến địa chỉ của biến ví dụ như hàm scanf Ðể nhậnđịa chỉ của biến dùng toán tử: & tên_biến;
char ki_tu; /* Khai báo một kí tự*/
int so_nguyen; /* Khai báo một số nguyên*/
float so_thuc; /* Khai báo một số thực*/
ki_tu = 'a';
so_nguyen = 15;
so_thuc = 27.62;
printf("%c la mot ki tu.\n",ki_tu);
printf("%d la mot so nguyen.\n",so_nguyen);
printf("%f la mot so thuc.\n",so_thuc);
Trang 28Ví dụ 1:
int x=2,y=7;
x=(x+2*y); /* x,y là các biến tương ứng với các toán hạng ; phép cộng (+)
và (*) và dấu (=) là các toán tử của biểu thức*/
Ví dụ 2:
int i, a=3;
a=(i=a*11); /*là một biểu thức hợp lệ (với a là một biến đã có giá trịtrước đó).*/
Câu hỏi, bài tập:
3.1 Tên nào đặt đúng qui định của lập trình C
3.4 Kiểu số nguyên có phạm vi biểu diễn nằm trong khoảng
Trang 29
Yêu cầu đánh giá
- Trình bày được bộ ký tự, từ khóa, tên
- Trình bày được các kiểu dữ liệu căn bản
- Định nghĩa, khai báo được hằng, biến
Trang 30
BÀI 4
SỬ DỤNG CÁC PHÉP TOÁN VÀ CÂU LỆNH NHẬP, XUẤT TRONG
LẬP TRÌNH C Giới thiệu:
Trong bất cứ một ngôn ngữ lập trình nào, việc tương tác trực tiếp với máytính là rất quan trọng và cần thiết Một chương trình được viết ra cần có khảnăng nhận dữ liệu từ người dùng và hiển thị những kết quả thu được sau tínhtoán Do đó việc thành thạo trong việc nhập/xuất dữ liệu là điều không thể thiếuđối với mỗi lập trình viên Bài viết này sẽ giúp các bạn hiểu rõ hơn về các phéptoán, thao tác nhập/xuất dữ liệu
Mục tiêu:
- Trình bày được công dụng của các phép toán
- Trình bày được các lệnh nhập, xuất dữ liệu
- Áp dụng các phép toán vào trong các bài toán
- Sử dụng câu lệnh nhập xuất vào trong các bài tập
- Rèn luyện tính cẩn thận, kiên trì, sáng tạo, độc lập và hoạt động nhóm
- Bảo đảm an toàn và vệ sinh cho người và thiết bị trong phòng máy
Ví dụ :
11/3=3
Trang 311.2 Các phép toán quan hệ và logic :
Phép toán quan hệ và logic cho ta giá trị đúng (1) hoặc giá trị sai (0) Nói cáchkhác, khi các điều kiện nêu ra là đúng thì ta nhận được giá trị 1, trái lại ta nhậngiá trị 0
Các phép toán quan hệ có số thứ tự ưu tiên thấp hơn so với các phép toán
số học, cho nên biểu thức :i<n-1 được hiểu là i<(n-1)
1.2.2.Các phép toán logic :
Trong C sử dụng ba phép toán logic :
Trang 32Các phép quan hệ có số ưu tiên nhỏ hơn so với ! nhưng lớn hơn so với && và ||,
vì vậy biểu thức như:
(a<b)&&(c>d)
có thể viết lại thành:
a<b&&c>d
Chú ý :Cả a và b có thể là nguyên hoặc thực.
1.2.3 Phép toán tăng giảm :
C đưa ra hai phép toán một ngôi để tăng và giảm các biến ( nguyên và thực ).Toán tử tăng là ++ sẽ cộng 1 vào toán hạng của nó, toán tử giảm thì sẽ trừtoán hạng đi 1
Ví dụ :
n=5
++n Cho ta n=6
Trang 33
Ta có thể viết phép toán ++ và trước hoặc sau toán hạng như sau : ++n, n++, n, n
Sự khác nhau của ++n và n++ ở chỗ : trong phép n++ thì tăng sau khi giá trị của
nó đã được sử dụng, còn trong phép ++n thì n được tăng trước khi sử dụng Sựkhác nhau giữa n và n cũng như vậy
Ðịa chỉ của biến là số thứ tự của byte đầu tiên trong một dãy các byte liên tiếp
mà máy dành cho biến
Phân loại địa chỉ biến
Từ khái niệm về địa chỉ, ta nhận xét thấy : Ðịa chỉ của hai biến kiểu int liêntiếp cách nhau 2 byte, địa chỉ của hai biến kiểu float liên tiếp cách nhau 4 byte.Nên có thể phân biệt được các kiểu địa chỉ: Ðịa chỉ kiểu int, địa chỉ kiểu float,địa chỉ kiểu double
Phép lấy địa chỉ của một biến
Phép toán : &x cho ta địa chỉ của biến x
1.2.5 Chuyển đổi kiểu dữ liệu
Khi hai toán hạng trong một phép toán khác kiểu dữ liệu thì kiểu dữ liệuthấp được nâng thành kiểu dữ liệu cao trước khi tính toán Ví dụ: nếu f có kiểufloat, i có kiểu int, thì trong biểu thức f +i , i sẽ tạm thời được chuyển sang kiểufloat để thực hiện phép cộng
Nếu f có kiểu float, i1 và i2 có kiểu int và có giá trị 10 và 3 thì biểu thứcf=i1/i2 sẽ gán vào f giá trị 3.0 Trong trường hợp này, để thu được kết quả chínhxác, cần sử dụng phép ép kiểu : f=(float) i1/i2
Ví dụ:
int a,b=4;c=5;float x,y=6.8,z=3.8;
a=y; /*a =6*/
Trang 34a=y-z ; /*a=2 (nếu kết quả là 2.999.) hoặc 3*/
1.2.6 Thứ tự ưu tiên các phép toán :
Các phép toán có độ ưu tiên khác nhau, điều này có ý nghĩa trong cùngmột biểu thức sẽ có một số phép toán này được thực hiện trước một số phép toánkhác
Thứ tự ưu tiên của các phép toán được trình bày trong bảng sau :
Bảng 4.4: Bảng thứ tự ưu tiên của các pháp toán
Trang 35
8/4*6=(8/4)*6 ( Trái qua phải )
Nên dùng các dấu ngoặc tròn để viết biểu thức một cách chính xác
2 Các lệnh nhập, xuất dữ liệu:
2.1 Các lệnh xuất:
Thư viện: #include <stdio.h> (standard input/output)
Hàm printf()
Cú pháp: printf("Dòng điều khiển",[các biểu thức]);
Dòng điều khiển gồm 3 loại:
+ Chuỗi ký tự mang tính chất thông báo (hằng chuỗi)
+ Các ký tự điều khiển( \n, \r, \t )
+ Các mã đặc tả để in các biểu thức tương ứng (mỗi biểu thức khi in phải
có một đặc tả) Các đặc tả được dùng trong hàm printf như sau:
Bảng 4.5: Bảng các ký tự đặc tả của hàm printf
Trang 36 Ví dụ 1: Nhập năm sinh của một người Tính tuổi người đó.
printf("nhap nam hiện tại"); scanf("%d",& namhientai);
printf("nhap nam sinh"); scanf("%d",&namsinh);
tuoi=namhientai-namsinh;
Trang 37char a[5];/*Khai báo một chuỗi (xâu) gồm 5 ký tự*/
main () /* Ham chinh */
{
int i;
printf("Nhap chuoi 5 ky tu: ");gets(a);
/* giả sử nhập vào là ABCDEFGH , có thể nhập được khoảng trắng *//*Khi nhập chuỗi ta không cần phải lấy địa chỉ*/
Trang 38- ý nghĩa : Xuất một chuỗi lên màn hình với *s là con trỏ kiểu char trỏ tới ô nhớ
đầu của vùng nhớ chứa chuỗi ký tự muốn xuất Hàm này khi xuất sẽ đưa thêm
ký tự \n vào cuối, kết quả của hàm =\n nếu thành công ngược lại = EOF.
Trang 39
puts("Hàm puts có chức năng: Ðưa một chuỗi ký tự ra màn hình ");puts("Khi thành công, hàm trả về kí tự cuối cùng được xuất ");puts("Khi có lỗi hàm trả về EOF.");
}
Câu hỏi, bài tập:
4.1 Nhập 2 số a và b Tính tổng, hiệu, tính và thương của hai số đó
4.2 Nhập tên sản phẩm, số lượng và đơn giá Tính tiền và thuế giá trị gia tăngphải trả, biết:
tiền = số lượng * đơn giáthuế giá trị gia tăng = 10% tiền4.3 Viết chương trình nhập vào các cạnh của hình chữ nhật, tính chu vi, diệntích
4.4 Viết chương trình tính diện tích, chu vi hình tam giác
4.5 Lập trình nhập vào ba số thực a,b,c sau đó in ra màn hình các số vừa nhập
Yêu cầu đánh giá
- Trình bày được cú pháp, ý nghĩa của các phép toán và câu lệnh nhập xuất dữ liệu
- Sử dụng được các hàm thư viện vào đúng các câu lệnh
- Viết được chương trình có sử dụng các phép toán và các câu lệnh nhập/ xuất
- Sửa chữa được các lỗi, chạy được bằng tay và kết quả trên máy tính
Trang 40sẽ giúp cho người học làm quen với câu lệnh có cấu trúc điều kiện if, switch.
Mục tiêu:
- Trình bày và phân biệt được câu lệnh đơn và lệnh ghép
- Trình bày được cú pháp, sự hoạt động, lưu đồ khối của câu lệnh if dạng đầy đủ
và dạng khuyết
- Trình bày được cú pháp, sự hoạt động, lưu đồ khối của câu lệnh switch case
- Sử dụng được câu lệnh if dạng khuyết và dạng đầy đủ vào trong các bài toán
cụ thể
- Sử dụng được câu lệnh câu lệnh switch case vào trong các bài toán cụ thể
- Rèn luyện tính cẩn thận, kiên trì, sáng tạo, độc lập và hoạt động nhóm
- Bảo đảm an toàn và vệ sinh cho người và thiết bị trong phòng máy
Trong đó: if: là từ khóa, <Biểu thức điều kiện>: là một biểu thức có kiểu logic,
<Công việc>:được thể hiện bằng 1 câu lệnh hay 1 khối lệnh
Lệnh đơn:
Một biểu thức lệnh(gán, tăng giá trị) kết thúc bởi dấu ”;” là một câu lệnh đơn Một lời gọi hàm đi sau bằng một dấu “ ;” cũng là một câu lệnh đơn
Ví dụ: x=0; i++; printf(“\n”);