- 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ậ[r]
Trang 1UBND TỈNH BÀ RỊA- VŨNG TÀU
TRƯỜNG CAO ĐẲNG KỸ THUẬT CÔNG NGHỆ
GIÁO TRÌNH
MÔ ĐUN: LẬP TRÌNH CƠ BẢN
NGHỀ: QUẢN TRỊ MẠNG TRÌNH ĐỘ: CAO ĐẲNG
Ban hành kèm theo Quyết định số: /QĐ-CĐKTCN
ngày….tháng….năm của Hiệu trưởng Trường Cao đẳng Kỹ thuật Công nghệ BR – VT)
BM/QT10/P.ĐTSV/04/04 Ban hành lần: 3
Trang 2BÀ RỊA–VŨNG TÀU, NĂM 2020 TUYÊN BỐ BẢN QUYỀN
Nhằm đáp ứng nhu cầu học tập và nghiên cứu cho giảng viên và sinh viên nghề Quản trị mạng trong trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa – Vũng Tàu, chúng tôi đã thực hiện biên soạn tài liệu Lập trình cơ bản này
Tài liệu được biên soạn thuộc loại giáo trình phục vụ giảng dạy và học tập, lưu hành nội bộ trong Nhà trường nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm
Trang 3LỜI GIỚI THIỆU
Giáo trình lập trình cơ bản C được xây dựng và biên soạn trên cơ sở chương trình khung đào tạo cao đẳng nghề Quản trị mạng đã được Trường Cao Đẳng Kỹ thuật Công nghệ Bà Rịa – Vũng Tàu phê duyệt
Giáo Trình được biên soạn nhằm đáp ứng yêu cầu học tập của sinh viên bước đầu làm quen với công việc lập trình, đồng thời giúp cho sinh viên có một tài liệu học tập, rèn luyện tốt khả năng lập trình, tạo nền tảng vững chắc cho các môn học tiếp theo
Nội dung giáo trình được chia làm 16 bài:
Bài 1: Giới thiệu về thuật toán
Bài 2: Giới thiệu ngôn ngữ lập trình C
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
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 CBài 5: Sử dụng câu lệnh có cấu trúc điều kiện
Bài 6: Sử dụng cấu trúc vòng lặp for
Bài 7: Sử dụng cấu trúc vòng lặp while
Bài 8: Sử dụng cấu trúc vòng lặp do while
Bài 9: Sử dụng các câu lệnh break, continue, goto
Bài 10: Giới thiệu về hàm
Bài 11: Truyền tham số cho hàm
Bài 12: Nhập xuất dữ liệu cho mảng một chiều
Bài 13: Sử dụng mảng một chiều làm tham số cho hàm
Bài 14: Sắp xếp mảng một chiều
Bài 15: Nhập xuất chuỗi ký tự
Bài 16: Thao tác trên chuỗi ký tự
Trong quá trình biên soạn giáo trình, tác giả đã cố gắng cập nhật thông tinmới, đồng thời tham khảo nhiều giáo trình khác, nhưng chắc chắn sẽ khôngtránh khỏi những hạn chế nhất định Rất mong nhận được ý kiến đóng góp của
1
Trang 4các nhà chuyên môn, các anh chị đồng nghiệp và các bạn độc giả để giáo trìnhđược hoàn thiện hơn.
Bà Rịa – Vũng Tàu, ngày tháng năm 2020
Biên soạn
Nguyễn Thị Mai
Trang 5MỤC LỤC
LỜI GIỚI THIỆU 1
MỤC LỤC 3
BÀI 1: THUẬT TOÁN 10
1 Ví dụ 10
2 Khái niệm 10
2.1 Khái niệm về bài toán 10
2.2 Khái niệm thuật toán 11
3 Các đặc trưng của thuật toán 11
3.1 Liệt kê 11
3.2 Dùng sơ đồ khối 12
BÀI 2: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C 15
1 Lịch sử hình thành 15
2 Đặc điểm của ngôn ngữ c 16
3 Cấu trúc của một chương trình c 16
4 Một số ví dụ mẫu 17
5 Cài đặt chương trình 18
6 Khởi động chương trình 18
7 Soạn thảo chương trình 18
8 Thoát khỏi chương trình 19
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 20
1 Bộ ký tự, từ khóa và tên 20
1.1 Bộ ký tự 20
1.2 Từ khóa 20
1.3 Tên 21
2 Các kiểu dữ liệu căn bản 21 2.1 Kiểu số nguyên (int): Trong C cho phép sử dụng các kiểu số nguyên sau: 21
3
Trang 62.2 Kiểu ký tự (char) 22
2.3 Kiểu dấu phẩy động 22
3 Hằng, biến, biểu thức 23
3.1 Hằng 23
3.2 Biến 25
3.3 Biểu thức 26
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 28
1 Các phép toán 28
1.1 Các phép toán toán học 28
1.2 Các phép toán quan hệ và logic 29
1.2.1 Các phép toán quan hệ 29
1.2.2 Các phép toán logic 29
1.2.3 Phép toán tăng giảm 30
1.2.4 Các phép toán lấy địa chỉ biến 31
1.2.5 Chuyển đổi kiểu dữ liệu 31
1.2.6 Thứ tự ưu tiên các phép toán 32
2 Các lệnh nhập, xuất dữ liệu 33
2.1 Các lệnh xuất 33
2.2 Các lệnh nhập 35
2.3 Các hàm nhập xuất dữ liệu khác: 36
2.3.1 Hàm getch(): 36
2.3.2.Hàm gets 36
2.3.3.Hàm getchar 37
2.3 4 Hàm putchar 37
2.3.5 Hàm puts 37
Trang 7BÀI 5: SỬ DỤNG CÂU LỆNH CÓ CẤU TRÚC ĐIỀU KIỆN 39
1 Lệnh có cấu trúc điều kiện if 39
1.1 Cấu trúc if dạng khuyết 39
1.1.1.Cú pháp 39
1.1.2 Sự hoạt động 40
1.1.3 Lưu đồ khối 40
1.1.4 Bài tập 41
1.2 Cấu trúc if dạng đầy đủ 42
1.2.1 Cú pháp 42
1.2.2 Sự hoạt động: 43
1.2.3 Lưu đồ khối 43
1.1.4 Bài tập 43
2 Lệnh có cấu trúc lựa chọn switch case 45
2.1 Cú pháp 45
2.2 Sự hoạt động 45
2.3 Lưu đồ khối 46
2.4 Bài tập 46
BÀI 6: SỬ DỤNG CẤU TRÚC VÒNG LẶP FOR 48
1.Cú pháp 48
2 Sự hoạt động 48
3 Lưu đồ khối 49
4 Bài tập 49
BÀI 7: SỬ DỤNG CẤU TRÚC VÒNG LẶP WHILE 52
1 Cú pháp 52
2 Sự hoạt động 52
3 Lưu đồ khối 52
4 Bài tập 53
5
Trang 8BÀI 8: SỬ DỤNG CẤU TRÚC VÒNG LẶP DO WHILE 55
1 Cú pháp 55
2 Sự hoạt động 55
3 Lưu đồ khối 56
4 Bài tập 56
BÀI 9: SỬ DỤNG CÁC CÂU LỆNH BREAK, CONTINUE, GOTO 58
1 Lệnh break 58
2 Lệnh continue 59
3.Câu lệnh goto 59
BÀI 10: GIỚI THIỆU VỀ HÀM 62
1 Khái niệm 62
2 Khai báo hàm 64
2.1 Khai báo hàm không định kiểu dữ liệu 64
2.2 Khai báo hàm có định kiểu dữ liệu 65
3 Kết quả trả về của hàm- lệnh return- lệnh exit 66
3.1 Kết quả trả về của một hàm 66
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 đó 67
4 Bài tập 68
BÀI 11: TRUYỀN THAM SỐ CHO HÀM 70
1 Cách truyền tham số cho hàm 70
2 Bài tập 71
BÀI 12: NHẬP XUẤT DỮ LIỆU CHO MẢNG MỘT CHIỀU 73
1 Khái niệm 73
2 Khai báo mảng một chiều 73
3 Khởi tạo mảng 74
3.1 Khởi tạo mảng 74
3.2 Chỉ số của mảng 75
3.3 Lấy địa chỉ của phần tử mảng một chiều 75
Trang 94.Nhập xuất dữ liệu cho các phần tử của mảng một chiều 75
BÀI 13: SỬ DỤNG MẢNG MỘT CHIỀU LÀM THAM SỐ CHO HÀM 77
1.Dùng mảng làm tham số cho hàm 77
2 Tìm kiếm trong mảng một chiều 79
2.1 Ý tưởng 79
Xét từng phần của mảng a Nếu phần tử đang xét bằng x thì trả về vị trí đó Nếu kô tìm được thì trả về -1 79
2.2 Các bước tiến hành 79
2.3 Giải thuật 79
BÀI 14: SẮP XẾP MẢNG MỘT CHIỀU 84
1 Ý tưởng 84
2 Các bước tiến hành như sau 84
3 Giải thuật 85
BÀI 15: NHẬP XUẤT CHUỖI KÝ TỰ 88
1 Khái niệm 88
2 Khai báo biến chuỗi 88
2.1 Khai báo theo mảng 88
2.2 Vừa khai báo vừa gán giá trị 89
3 Vào ra với xâu ký tự 89
3.1 Nhập chuỗi từ bàn phím 89
3.2 Xuất chuỗi lên màn hình 89
BÀI 16: THAO TÁC TRÊN CHUỖI KÝ TỰ 91
1 Các phép toán trên chuỗi ký tự 91
2 Bài tập 94
TÀI LIỆU THAM KHẢO 96
7
Trang 10GIÁO TRÌNH MÔ ĐUN Tên mô đun: Lập trình cơ bản
Mã mô đun: MĐ10
Vị trí, tính chất, ý nghĩa và vai trò của mô đun:
- Vị trí: Mô đun được bố trí sau khi học xong môn tin học và tin học nâng cao
- 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 của mô đun:
- Về kiến thức:
+ 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ấutrú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
- Về kỹ năng:
+ 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ácbà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ả
Trang 11+ Có khả năng tổ chức và điều hành một nhóm, đánh giá được các thànhviên trong nhóm.
+ 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:
9
Trang 12BÀI 1: THUẬT TOÁN
- 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 chính:
1 Ví dụ
Xét các yêu cầu sau:
- Bài 1: Tính chu vi, diện tích hình chữ nhật
- Bài 2: Viết một dòng chữ ra màn hình máy tính
- Bài 3: Quản lý các cán bộ trong một cơ quan
- Bài 4: Tìm số lớn nhất của hai số nguyên dương a và b
- Bài 5: 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?
2 Khái niệm
2.1 Khái niệm về bài toán
- Bài toán là một việc nào đó mà con người muốn máy tính thực hiện
- Các yếu tố của một bài toán:
+ Input: Thông tin đã biết, thông tin đưa vào máy tính
+ Output: Thông tin cần tìm, thông tin lấy ra từ máy tính
Ví dụ 1: Tính chu vi, diện tích hình chữ nhật
- Input: Các cạnh của hình chữ nhật
- Output: chu vi và diện tích hình chữ nhật
Trang 13Hướ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
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
2.2 Khái niệm thuật toán
Thuật toán: Là tập hợp (dãy) hữu hạn các 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 đó
Tính chất của thuật toán:
- 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ínhxá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
3 Các đặc trưng của thuật toán
Trong giáo trình này giới thiệu 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
11
Trang 14Ví 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ê:
- 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
Liệt kê:
- 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
Trang 15- 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
- Hiển thị chu vi
- Hiển thị diện tích
Kết thúc
Trang 16Lư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.
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ố đó
Trang 17BÀI 2: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C
Mã bài: 10.2
Giới thiệu:
Bài học này giới thiệu về lịch sử hình thành và phát triển của ngôn ngữ lập trình c, cấu trúc của một chương trình c, thực hiện các thao tác cài đặt Dev c++, khởi động và thoát khỏi một chương trình Dev 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 chính:
1 Lịch sử hình thành
- Ngôn ngữ lập trình C ra đời năm 1972, do Dennis Ritchie khởi xướng
- C được tạo ra để sử dụng như một phần căn bản của hệ điều hành UNIX (Ken Thompson, Dennis Ritchie và Douglas McIlroy, 1969)
- C được sử dụng rộng rãi và có ảnh hưởng lớn đến nhiều ngôn ngữ lập trình hiện đại, trong đó có C++, được xem là mở rộng của C
- Là ngôn ngữ lập trình có cấu trúc và phân biệt chữ Hoa - thường (case
sensitive)
- Môi trường C:
+ Borland C (còn gọi là Turbo C)
+ Borland C++ 3.1 for DOS
- Môi trường C/C++:
+ Dev-C++
+ Visual C++ của Microsoft
+ Visual Stdio sẽ thực hành trên môi trường này
15
Trang 182 Đặ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
Quy tắc khi lập trình C như sau:
- Không được lưu tên tập tin dưới dạng tiếng Việt có dấu và khoảng cách, các
ký tự đặc biệt
- 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)
- 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
Ví dụ viết chương trình hiển thị câu “xin chào”
Hình 2.1: Ví dụ mô phỏng 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/Olibrary) Các thư viện khác: string, time, math, conio.h, iostream.h…
main():
Trang 19- 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ìnhC đượ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 là dấu chấm phẩy “;”: Một câu lệnh trong C được kếtthúc bằng dấu chấm phẩ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à */
printf(“TRAN TRONG KINH MOI”);
printf(“Ban: Hai Ha”);
printf(“Den du sinh nhat”);
printf(“vao luc 17h ngay 10-8-2020”);
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 "Link" ở khung bên trái và thay đổi thông số
"Generate debugging information" sang "Yes":
- Nhấn OK
Hình 2.2: 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 / Dev C++
7 Soạn thảo chương trình
Vào file/ new/ source File/ Xuất hiện khung cửa sổ để soạn thảo chương trình
Trang 21Hình 2.3: Hộp hội thoại mở màn hình soạn thảo Dev C++
8 Thoát khỏi chương trình
Thoát khỏi Dev C++
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
19
Trang 22BÀI 3: TRÌNH BÀY CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ
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ừ:
Trang 23tử 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
volatile while
Ý nghĩa và cách sử dụng của mỗi từ khóa sẽ được đề cập sau này, ở đây ta cầnchú ý:
- Không được dùng các từ khóa để đặ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ừ khóa 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ố)
A#B (vì có dấu #)
Delta (vì có khoảng trống), X-1 (vì sử dụng dấu gạch ngang)
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:
21
Trang 24Bảng 3.2: Bảng các ký hiệu biểu diễn kiểu số nguyên
unsigned long
(int)
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 25float 3.4E-38 -> 3.4E+38 7-8 4 byte
long double 3.4E-4932-> 1.1E+4932 17-184 byte 10 byte
3 Hằng, biến, biểu thức
3.1 Hằng
- Khái niệm
Là 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:
- 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ó)
23
Trang 26Ðố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:
Bảng 3.5: Bảng các ký hiệu biểu diễn kiểu ký tự
Là 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ự Null (\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 định nghĩ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 27hiện chương trình và giá trị của biến có thể bị thay đổi trong quá trình này Cáchđặt tên biến giống như cách đặt tên đã nói trong phần trên Mỗi biến thuộc vềmột kiểu dữ liệu xác định và có giá trị thuộc kiểu đó.
Khở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 ky tu.\n",ki_tu);
printf("%d la mot so nguyen.\n",so_nguyen);
25
Trang 28printf("%f la mot so thuc.\n",so_thuc);
Ví 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
a 26 chữ cái in thường, in hoa c Dấu cách, dấu gạch nối
b 10 chữ số (0,1,…,9) d Tất cả các câu trên đều đúng3.4 Kiểu số nguyên có phạm vi biểu diễn nằm trong khoảng
Trang 30BÀI 4: SỬ DỤNG CÁC PHÉP TOÁN VÀ CÂU LỆNH NHẬP, XUẤT
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
- Tích cực hóa người học, 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
/ Phép chia a/b (Cho phần nguyên của phép chia a cho b)
% Phép lấy phần dư a%b (Cho phần dư của phép chia a cho b)
Ví dụ:
11/3 = 3
11%3 = 2
-(2+6) = -8
Trang 31Các phép toán + và - có cùng thứ tự ưu tiên, có thứ tự ưu tiên nhỏ hơn cácphép *, /, % và cả ba phép này lại có thứ tự ưu tiên nhỏ hơn phép trừ một ngôi.Các phép toán số học được thực hiện từ trái sang phải Số ưu tiên và khả năngkết hợp của phép toán được chỉ ra trong một mục sau này
1.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)
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
Trang 33Sự 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
- Cú pháp:
(<Tên kiểu dữ liệu cần chuyển>)<Biểu thức>
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*/
31
Trang 34a=-y; /*a =-6*/
x=a/b+c; /*x=4.0*/
x=a/b+(float) c; /*x=4.0*/
x=(float) a/b+ c; /*x=3.5*/
a=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
2 ! ~ & * - ++ (type) sizeof Phải qua trái
14 = += -= *= /= %= <<= >>= &= ^= |= Phải qua trái
* px=*( px) (Phải qua trái)
8/4*6=(8/4)*6 (Trái qua phải)
Trang 35Nê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
Hàm thư viện: Thư viện nhập xuất trong C cũng như rong C++ có tên là:
#include <stdio.h> (standard input/output)
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
%[n]d int in một số nguyên với chiều dài tối thiểu là n
%[n]ld long int in một số nguyên (long int)
%[n]o int in một số nguyên ở hệ bát phân tương ứng
%[n.m]f float in một số thực vối chiều dài n và lấy m số
Trang 36printf(“%d”, a); è Xuất ra 10
}
Sử dụng hàm cout
Cú pháp: cout << "Gia Tri";
Sử dụng toán tử << đằng sau cout để ngăn cách giữa các giá trị Nếu bạn muốn
in nhiều giá trị thì sử dụng cú pháp sau:
cout << "Gia Tri 1"<< "Gia Tri 2"<< "Gia Tri 3";
Trang 37%d int nhập một số nguyên
Ví dụ 1: Nhập năm sinh của một người Tính tuổi người đó
- Cú pháp: cin >> Tên biến;
Trường hợp ban muốn nhập nhiều giá trị cùng một lênh cin thì sử dụng cú phápsau:
cin >> Tên biến 1 >> Tên biến 2>> Tên biến 3;;
Trang 38+ Ý nghĩa: có thể sử dụng theo nhiều cách khác nhau, nếu viết getch(); là dùng
để dừng màn hình
2.3.2.Hàm gets
- Cú pháp:gets(Tên của mảng ký tự);
- ý nghĩa: Hàm này cho phép nhận một chuỗi từ bàn phím cho đến khi gặp ký tự
\n (cho phép nhập khoảng trắng giữa các từ)
- Ví dụ
/* Chương trình minh họa nhập dữ liệu (nhập một chuỗi (xâu) ký tự) bằng hàm gets() */
#include<stdio.h>
char 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ảngtrắng
//Khi nhập chuỗi ta không cần phải lấy địa chỉ
printf("%s",a); //In ra ABCDEFGH
Trang 39- ý 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.
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:
37
Trang 40tiề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