1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Lập trình căn bản (Nghề: Lập trình máy tính - Trình độ CĐ/TC) - Trường Cao đẳng Nghề An Giang

100 12 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 100
Dung lượng 1,52 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mục tiêu của Giáo trình Lập trình căn bản là phân tích chương trình: xác định nhiệm vụ chương trình (phải làm gì), xác định dữ liệu và cấu trúc dữ liệu của hệ thống. Phân tích và xây dựng thuật toán. Thiết kế chương trình: tìm giải pháp kỹ thuật (làm thế nào) đối với những công việc đã xác định trong giai đoạn phân tích. Mời các bạn cùng tham khảo!

Trang 1

ỦY BAN NHÂN DÂN TỈNH AN GIANG TRƯỜNG CAO ĐẲNG NGHỀ AN GIANG

(Ban hành theo Quyết định số: /QĐ-CĐN ngày tháng năm 20

của Hiệu trưởng trường Cao đẳng nghề An Giang)

Tác giả: Vương Thị Minh Nguyệt Năm ban hành : 2017

Trang 2

LỜI GIỚI THIỆU

Trước đây, để tạo ra chương trình máy tính người ta phải làm việc trực tiếp với các con số 0 hoặc 1, hay còn gọi là ngôn ngữ máy Công việc này vô cùng khó khăn, chiếm nhiều thời gian, công sức và đặc biệt dễ gây ra lỗi Để khắc phục nhược điểm này, người ta đề xuất ra hợp ngữ, một ngôn ngữ cho phép thay thế dãy 0 hoặc 1 này bởi các từ gợi nhớ tiếng Anh Tuy nhiên, cải tiến này vẫn còn chưa thật thích hợp với

đa số người dùng máy tính, những người luôn mong muốn các lệnh chính là ý nghĩa của các thao tác mà nó mô tả Vì vậy, ngay từ những năm 1950, người ta đã xây dựng những ngôn ngữ lập trình mà câu lệnh của nó gần với ngôn ngữ tự nhiên Các ngôn ngữ này được gọi là ngôn ngữ lập trình bậc cao

Lập trình căn bản với Pascal và C, C++

Đây là 2 ngôn ngữ căn bản và phổ biến nhất mà hầu như sinh viên nào cũng cần phải học qua trong giai đoạn mới bắt đầu học lập trình

Giáo trình này được thiết kế theo từng mô đun/ môn học thuộc hệ thống mô đun/môn học của một chương trình, để đào tạo hoàn chỉnh nghề Lập trình máy tính

ở cấp trình độ bậc cao và được dùng làm giáo trình cho học viên trong các khóa đào tạo, cũng có thể được sử dụng cho đào tạo ngắn hạn hoặc cho các công nhân kỹ thuật Mục tiêu thực hiện của môn học:

- Phân tích chương trình: xác định nhiệm vụ chương trình (phải làm gì), xác định

dữ liệu và cấu trúc dữ liệu của hệ thống Phân tích và xây dựng thuật toán

- Thiết kế chương trình: tìm giải pháp kỹ thuật (làm thế nào) đối với những công việc đã xác định trong giai đoạn phân tích

- Viết chương trình

- Vận dụng điều kiện, trợ giúp môi trường của ngôn ngữ lập trình, chẳng hạn: trình biên tập mã lệnh

- Mô tả được hằng và biến dùng trong chương trình

- Vận dụng quy tắc cú pháp của ngôn ngữ lập trình

- Vận dụng các cấu trúc điều khiển, cấu trúc lặp

Trang 3

- Trình bày chương trình có chú thích (tóm tắt) cho từng đoạn mã, thuận lợi cho việc theo dõi chức năng của chúng

Nội dung chính của môn học:

CHƯƠNG 1: THUẬT TOÁN

CHƯƠNG 2: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C++

CHƯƠNG 3: CÁC THÀNH PHẦN VÀ CÁC KIỂU DỮ LIỆU CƠ BẢN CHƯƠNG 4: CÁC CẤU TRÚC ĐIỀU KHIỂN

để cuốn giáo trình ngày một hoàn thiện hơn

An Giang, ngày tháng năm 20

Tham gia biên soạn

Vương Thị Minh Nguyệt

Trang 4

MỤC LỤC

LỜI GIỚI THIỆU 1

CHƯƠNGTRÌNH MÔN HỌC 6

CHƯƠNG 1: THUẬT TOÁN 9

I.KHÁI NIỆM 9

II.CÁC ĐẶC TRƯNG CỦA THUẬT TOÁN 10

III PHƯƠNG PHÁP BIỂU DIỄN THUẬT TOÁN 10

BÀI TẬP 16

CHƯƠNG 2: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C++ 17

I.LỊCH SỬ HÌNH THÀNH 17

II.ĐẶC ĐIỂM 17

III.CẤU TRÚC MỘT CHƯƠNG TRÌNH C++ 18

IV.MỘT SỐ VÍ DỤ MẪU 19

V CÀI ĐẶT CHƯƠNG TRÌNH 20

VI KHỞI ĐỘNG CHƯƠNG TRÌNH 20

VII.SOẠN THẢO CHƯƠNG TRÌNH 21

VIII.THOÁT KHỎI CHƯƠNG TRÌNH 23

BÀI TẬP 23

CHƯƠNG 3: CÁC THÀNH PHẦN VÀ CÁC KIỂU DỮ LIỆU CƠ BẢN 24

I.CÁC THÀNH PHẦN 24

II.CÁC KIỂU KIỂU DỮ LIỆU CƠ BẢN 26

III HẰNG 28

VI CÁC PHÉP TOÁN CỦA C++ 29

V.XUẤT, NHẬP DỮ LIỆU 32

BÀI TẬP 39

CHƯƠNG 4: CÁC CẤU TRÚC ĐIỀU KHIỂN 40

I.LỆNH ĐƠN VÀ LỆNH PHỨC 40

II.CẤU TRÚC ĐIỀU KIỆN if else 41

III CẤU TRÚC LỰA CHỌN switch case 44

Trang 5

IV CÁC CẤU TRÚC LẶP 46

V.CÂU LỆNH break, continue, goto và hàm exit 52

BÀI TẬP 55

CHƯƠNG 5: HÀM 57

I.KHÁI NIỆM 57

II.KHAI BÁO HÀM 57

III KẾT QUẢ TRẢ VỀ CỦA HÀM 60

IV CÁCH TRUYỀN THAM SỐ CHO HÀM 60

V.ĐỆ QUI 62

BÀI TẬP 66

CHƯƠNG 6: MẢNG 67

I.KHÁI NIỆM 67

II.KHAI BÁO MẢNG 67

III.KHỞI TẠO MẢNG 68

IV DÙNG MẢNG LÀM THAM SỐ 70

V MẢNG NHIỀU CHIỀU 72

BÀI TẬP 74

CHƯƠNG 7: CON TRỎ 75

I.KHÁI NIỆM 76

II.CON TRỎ VÀ ĐỊA CHỈ 76

III.KHAI BÁO BIẾN KIỂU CON TRỎ 78

IV CÁC PHÉP TOÁN 78

V.CON TRỎ MẢNG 80

VI CON TRỎ HẰNG 82

VII.CON TRỎ KHÔNG KIỂU 83

VIII.KHỞI TẠO CON TRỎ 84

IX CON TRỎ TRỎ TỚI CON TRỎ 85

X.CON TRỎ HÀM 85

BÀI TẬP 87

CHƯƠNG 8: CẤU TRÚC 88

I.KHÁI NIỆM 88

II.KHAI BÁO CẤU TRÚC 88

Trang 6

III.TRUY CẬP ĐẾN CÁC THÀNH PHẦN CỦA CẤU TRÚC 92

IV CON TRỎ CẤU TRÚC VÀ ĐỊA CHỈ CẤU TRÚC 95

BÀI TẬP 98

CÁC THUẬT NGỮ CHUYÊN MÔN 99

TÀI LIỆU THAM KHẢO 99

Trang 7

CHƯƠNGTRÌNH MÔN HỌC Tên môn học: LẬP TRÌNH CĂN BẢN

- Thuộc nhóm môn: Cơ sở

- Được bố trí sau các môn: Môn học được bố trí sau khi học sinh học xong các môn: toán cho tin học và tin học căn bản

- Phân tích chương trình: xác định nhiệm vụ chương trình (phải làm gì), xác định

dữ liệu và cấu trúc dữ liệu của hệ thống Phân tích và xây dựng thuật toán

- Thiết kế chương trình: tìm giải pháp kỹ thuật (làm thế nào) đối với những công việc đã xác định trong giai đoạn phân tích

2 Về kỹ năng

- Vận dụng điều kiện, trợ giúp môi trường của ngôn ngữ lập trình, chẳng

- Trình bày chương trình có chú thích (tóm tắt) cho từng đoạn mã, thuận lợi cho việc theo dõi chức năng của chúng

- Thử nghiệm được chương trình

3 Về năng lực tự chủ và trách nhiệm

- Nghiêm túc trong học tập và thực hiện tốt các yêu cầu được giao

- Luôn động não suy nghĩ Thường xuyên luyện tập tư duy trong việc học

- Thực hiện học tập và thực hành nhóm

III NỘI DUNG MÔN HỌC:

Chương 1: Thuật toán

I Khái niệm

II Các đặc trưng của thuật toán

III Phương pháp biểu diễn

Chương 2: Giới thiệu ngôn ngữ lập trình C++

I Lịch sử hình thành

II Đặc điểm

Trang 8

III Cấu trúc của một chương trình C++

IV Một số ví dụ mẫu

V Cài đặt chương trình

VI Khởi động chương trình

VII Soạn thảo chương trình

VIII Thoát khỏi chương trình

Chương 3: Các thành phần và các kiểu dữ liệu cơ bản

II Cấu trúc điều kiện: if else

III Cấu trúc lựa chọn: switch case

IV Các cấu trúc lặp

V Câu lệnh break, continue, goto và hàm exit

Chương 5: Hàm

I Khái niệm

II Khai báo hàm

III Kết quả trả về của hàm – Lệnh return

IV Cách truyền tham số cho hàm

V Đệ qui

Chương 6: Mảng

I Khái niệm

II Khai báo mảng

III Khởi tạo mảng

IV Dùng mảng làm tham số

Chương 7: Con trỏ

I Khái niệm

II Toán tử lấy địa chỉ (&)

III Toán tử tham chiếu (*)

IV Khai báo biến kiếu con trỏ

V Các phép toán

Trang 9

VI Con trỏ hằng

VII Con trỏ mảng

VIII Khởi tạo con trỏ

IX Con trỏ trỏ tới con trỏ

X Con trỏ không kiểu

XI Con trỏ hàm

Chương 8: Cấu trúc

I Khái niệm cấu trúc

II Khai báo cấu trúc

III Truy cập đến các thành phần của cấu trúc

IV Ví dụ cấu trúc

Trang 10

CHƯƠNG 1 THUẬT TOÁN Giới thiệu

Thuật toán là một hệ thống chặt chẽ và rõ ràng các qui tắc nhằm xác định một dãy các thao tác trên những đối tượng, sao cho sau một số hữu hạn bước thực hiện các

Ví dụ 1: Giải phương trình bậc hai ax2 + bx + c = 0

Trang 11

II CÁC ĐẶC TRƯNG CỦA THUẬT TOÁN

1 Tính xác định

Ở mỗi bước của thuật toán, các thao tác phải hết sức rõ ràng Không thể gây nên

sự nhập nhằng, lẫn lộn, tùy tiện Nói cách khác là trong cùng một điều kiện, hai bộ xử

lí cùng thực hiện một bước của thuật toán thì phải cho cùng một kết quả

- Thời gian cần thiết để chạy

- Có dễ hiểu đối với con người không

- Có dễ cài đặt trên máy không

III PHƯƠNG PHÁP BIỂU DIỄN THUẬT TOÁN

Khi chứng minh hoặc giải một bài toán trong toán học, ta thường dùng những ngôn từ toán học như : "ta có", "điều phải chứng minh", "giả thuyết", 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ên cũng phải tuân theo một số quy tắc nhất định Ðể có thể truyền đạt thuật toán cho người khác hay chuyển thuật toán thành chương trình máy tính, ta phải có phương pháp biểu diễn thuật toán Có 3 phương pháp biểu diễn thuật toán : Dùng ngôn ngữ tự nhiên, dùng lưu đồ - sơ đồ khối, dùng

mã giả

Trang 12

1 Ngôn ngữ tự nhiên

Trong cách biểu diễn thuật toán theo ngôn ngữ tự nhiên, người ta sử dụng ngôn ngữ thường ngày để liệt kê các bước của thuật toán (ví dụ 1sử dụng ngôn ngữ tự

nhiên) Phương pháp biểu diễn này không yêu cầu người viết thuật toán cũng như

người đọc thuật toán phải nắm các quy tắc Tuy vậy, cách biểu diễn này thường dài dòng, không thể hiện rõ cấu trúc của thuật toán, đôi lúc gây hiểu lầm hoặc khó hiểu cho người đọc Gần như không có một quy tắc cố định nào trong việc thể hiện thuật toán bằng ngôn ngữ tự nhiên Tuy vậy, để dễ đọc, ta nên viết các bước con lùi vào bên phải và đánh số bước theo quy tắc phân cấp như 1, 1.1, 1.1.1

2 Lưu đồ - sơ đồ khối

Lưu đồ hay sơ đồ khối là một công cụ trực quan để diễn đạt các thuật toán Biểu diễn thuật toán bằng lưu đồ sẽ giúp người đọc theo dõi được sự phân cấp các trường hợp và quá trình xử lý của thuật toán Phương pháp lưu đồ thường được dùng trong những thuật toán có tính rắc rối, khó theo dõi được quá trình xử lý

Ðể biểu diễn thuật toán theo sơ đồ khối, ta phải phân biệt hai loại thao tác Một

thao tác là thao tác chọn lựa dựa theo một điều kiện nào đó Chẳng hạn : thao tác "nếu

a = 0 thì kết thúc thuật toán, nếu a ≠ 0 thì tính delta" là thao tác chọn lựa Các thao

tác còn lại không thuộc loại chọn lựa được xếp vào loại hành động Chẳng hạn, "tính

x

2

2  

" là một thao tác thuộc loại hành động

Thao tác chọn lựa (decision)

Thao tác chọn lựa được biểu diễn bằng hình thoi bên trong chứa biểu thức điều kiện

x

2

1  

Trang 13

Khi dùng ngôn ngữ tự nhiên, ta mặc định hiểu rằng quá trình thực hiện sẽ lần lượt đi từ bước trước đến bước sau (trừ khi có yêu cầu nhảy sang bước khác) Trong ngôn ngữ lưu đồ, do thể hiện các bước bằng hình vẽ và có thể đặt các hình vẽ này ở vị trí bất kỳ nên ta phải có phương pháp để thể hiện trình tự thực hiện các thao tác Hai bước kế tiếp nhau được nối bằng một cung, trên cung có mũi tên để chỉ hướng thực hiện

Từ thao tác chọn lựa có thể có đến hai hướng đi, một hướng ứng với điều kiện thỏa và một hướng ứng với điều kiện không thỏa Do vậy, ta dùng hai cung xuất phát

từ các đỉnh hình thoi, trên mỗi cung có ký hiệu Ð/Ðúng/Y/Yes để chỉ hướng đi ứng với điều kiện thỏa và ký hiệu S/Sai/N/No để chỉ hướng đi ứng với điều kiện không thỏa

Ðiểm cuối (terminator)

Ðiểm cuối là điểm khởi đầu và kết thúc của thuật toán, được biểu diễn bằng hình ovan, bên trong có ghi chữ bắt đầu/start/begin hoặc kết thúc/end Ðiểm cuối chỉ có cung đi ra (điểm khởi đầu) hoặc cung đi vào (điểm kết thúc) Xem lưu đồ thuật toán giải phương trình bậc hai ở trên để thấy cách sử dụng của điểm cuối

Ðiểm nối (connector)

Ðiểm nối được dùng để nối các phần khác nhau

của một lưu đồ lại với nhau Bên trong điểm nối, ta

đặt một ký hiệu để biết sự liên hệ giữa các điểm nối

Ðiểm nối sang trang (off-page connector)

Delta > 0

Phương trình có 2 nghiệm phân biệt

x1, x2

Delta = 0

Đ

S

Trang 14

Tương tự như điểm nối, nhưng điểm nối sang trang được dùng khi lưu đồ quá lớn, phải vẽ trên nhiều trang Bên trong điểm nối sang trang ta cũng đặt một ký hiệu

để biết được sự liên hệ giữa điểm nối của các trang

Ở trên chỉ là các ký hiệu cơ bản và thường được dùng nhất Trong thực tế, lưu

đồ còn có nhiều ký hiệu khác nhưng thường chỉ dùng trong những lưu đồ lớn và phức tạp Ðối với các thuật toán trong cuốn sách này, ta chỉ cần sử dụng các ký hiệu trên là

đủ

Ví dụ: Vẽ lưu đồ giải phương trình bậc hai ax2

+ bx + c = 0

Trang 15

delta b

x

2

1  

Phương trình có nghiệm kép

a

b x

2

Phương trình vô nghiệm

Trang 16

Bảng ký hiệu

Ý nghĩa Ký hiệu

Điểm đầu, cuối

Thao tác chọn lựa

sẽ tìm hiểu về thao tác lặp trong các bài sau)

Khi thể hiện thuật toán bằng mã giả, ta sẽ vay mượn các cú pháp của một ngôn

ngữ lập trình nào đó để thể hiện thuật toán Tất nhiên, mọi ngôn ngữ lập trình đều có những thao tác cơ bản là xử lý, rẽ nhánh và lặp Dùng mã giả vừa tận dụng được các khái niệm trong ngôn ngữ lập trình, vừa giúp người cài đặt dễ dàng nắm bắt nội dung thuật toán Tất nhiên là trong mã giả ta vẫn dùng một phần ngôn ngữ tự nhiên Một khi đã vay mượn cú pháp và khái niệm của ngôn ngữ lập trình thì chắc chắn mã giả sẽ

bị phụ thuộc vào ngôn ngữ lập trình đó Chính vì lý do này, chúng ta chưa vội tìm hiểu về mã giả trong bài này (vì chúng ta chưa biết gì về ngôn ngữ lập trình!) Sau khi tìm hiểu xong bài về thủ tục - hàm bạn sẽ hiểu mã giả là gì !

Một đoạn mã giả của thuật toán giải phương trình bậc hai

if Delta > 0 then begin

x1=(-b-sqrt(delta))/(2*a)

x2=(-b+sqrt(delta))/(2*a)

KH

#STT

Trang 17

xuất kết quả : phương trình có hai nghiệm là x1 và x2

xuất kết quả : phương trình vô nghiệm

BÀI TẬP: xây dựng thuật toán và vẽ sơ đồ khối của các bài toán sau:

1 Tính n!

2 Giải phương trình: ax + b = 0

3 Tính chu vi, diện tích hình tròn biết bán kính r=3cm

4 Đưa ra màn hình dòng chữ: "Mon hoc lap trinh can ban"

Trang 18

CHƯƠNG 2 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C++

- Mô tả được 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++

Năm 1978, Dennish Ritchie và B.W Kernighan đã cho xuất bản quyển “Ngôn ngữ lập trình C” và được phổ biến rộng rãi đến nay Lúc ban đầu, C được thiết kế nhằm lập trình trong môi trường của hệ điều hành Unix nhằm mục đích hỗ trợ cho các công việc lập trình phức tạp Nhưng về sau, với những nhu cầu phát triển ngày một tăng của công việc lập trình, C đã vượt qua khuôn khổ của phòng thí nghiệm Bell và nhanh chóng hội nhập vào thế giới lập trình để rồi các công ty lập trình sử dụng một cách rộng rãi Sau đó, các công ty sản xuất phần mềm lần lượt đưa ra các phiên bản

hỗ trợ cho việc lập trình bằng ngôn ngữ C và chuẩn ANSI C cũng được khai sinh từ

đó

II ĐẶC ĐIỂM

Ngôn ngữ lập trình C là một ngôn ngữ lập trình hệ thống rất mạnh và rất “mềm dẻo”, có một thư viện gồm rất nhiều các hàm (function) đã được tạo sẵn Người lập trình có thể tận dụng các hàm này để giải quyết các bài toán mà không cần phải tạo mới Hơn thế nữa, ngôn ngữ C hỗ trợ rất nhiều phép toán nên phù hợp cho việc giải quyết các bài toán kỹ thuật có nhiều công thức phức tạp Ngoài ra, C cũng cho phép

Trang 19

người lập trình tự định nghĩa thêm các kiểu dữ liệu trừu tượng khác Tuy nhiên, điều

mà người mới vừa học lập trình C thường gặp “rắc rối” là “hơi khó hiểu” do sự “mềm dẻo” của C Dù vậy, C được phổ biến khá rộng rãi và đã trở thành một công cụ lập trình khá mạnh, được sử dụng như là một ngôn ngữ lập trình chủ yếu trong việc xây dựng những phần mềm hiện nay

Ngôn ngữ C có những đặc điểm cơ bản sau:

* Tính cô đọng (compact): C chỉ có 32 từ khóa chuẩn và 40 toán tử chuẩn,

nhưng hầu hết đều được biểu diễn bằng những chuỗi ký tự ngắn gọn

* Tính cấu trúc (structured): C có một tập hợp những chỉ thị của lập trình

như cấu trúc lựa chọn, lặp… Từ đó các chương trình viết bằng C được tổ chức rõ ràng, dễ hiểu

* Tính tương thích (compatible): C có bộ tiền xử lý và một thư viện chuẩn

vô cùng phong phú nên khi chuyển từ máy tính này sang máy tính khác các chương trình viết bằng C vẫn hoàn toàn tương thích

* Tính linh động (flexible): C là một ngôn ngữ rất uyển chuyển và cú pháp,

chấp nhận nhiều cách thể hiện, có thể thu gọn kích thước của các mã lệnh làm chương trình chạy nhanh hơn

* Biên dịch (compile): C cho phép biên dịch nhiều tập tin chương trình riêng

rẽ thành các tập tin đối tượng (object) và liên kết (link) các đối tượng đó lại với nhau thành một chương trình có thể thực thi được (executable) thống nhất

III CẤU TRÚC MỘT CHƯƠNG TRÌNH C++

Chương trình C++ là một chương trình tập hợp nhiều hàm trong đó phải có một hàm chính là main()

Hàm là đoạn mã lệnh độc lập được đặt tên và thực hiện một công việc xác định khi được gọi đến Một hàm có thể gọi đến nhiều hàm khác

Hàm main() là hàm được máy tính gọi đến trước tiên khi thực hiện chương trình Một chương trình c++ thường có cấu trúc như sau:

/* Các chỉ thị tiền xử lý */

#include

#define

typedef /* định nghĩa các kiểu dữ liệu */

/* khai báo nguyên mẫu các hàm */

Kiểu_dữ_liệu tên_hàm(tham_số);

khai báo các biến toàn cục;

/* chương trình chính */

Trang 20

Ví dụ : Xuất " Chao cac ban"

#include <stdio.h> // chỉ thị tiền xử lý

void main() // hàm main()

int x,y,dt; // khai báo biến

printf(“\nNhap chieu dai:”);scanf(“%d”,&x); // hàm đọc từ bàn phím

printf(“\nNhap chieu rong:”);scanf(“%d”,&y);

Trang 21

V CÀI ĐẶT CHƯƠNG TRÌNH

Turbo C là môi trường hỗ trợ lập trình C do hãng Borland cung cấp Môi trường này cung cấp các chức năng như: soạn thảo chương trình, dịch, thực thi chương trình… Phiên bản được sử dụng ở đây là Turbo C 3.0

Chạy Turbo C cũng giống như chạy các chương trình khác trong môi trường DOS hay Windows, màn hình sẽ xuất hiện menu của Turbo C có dạng như sau:

Dòng trên cùng gọi là thanh menu (menu bar) Mỗi mục trên thanh menu lại có thể có nhiều mục con nằm trong một menu kéo xuống

Dòng dưới cùng ghi chức năng của một số phím đặc biệt Chẳng hạn khi gõ phím F1 thì ta có được một hệ thống trợ giúp mà ta có thể tham khảo nhiều thông tin

bổ ích

Muốn vào thanh menu ngang ta gõ phím F10 Sau đó dùng các phím mũi tên qua trái hoặc phải để di chuyển vùng sáng tới mục cần chọn rồi gõ phím Enter Trong menu kéo xuống ta lại dùng các phím mũi tên lên xuống để di chuyển vùng sáng tới mục cần chọn rồi gõ Enter

Ta cũng có thể chọn một mục trên thanh menu bằng cách giữ phím Alt và gõ vào một ký tự đại diện của mục đó (ký tự có màu sắc khác với các ký tự khác) Chẳng hạn để chọn mục File ta gõ Alt-F (F là ký tự đại diện của File)

VI KHỞI ĐỘNG CHƯƠNG TRÌNH

Turbo C là môi trường hỗ trợ lập trình C do hãng Borland cung cấp Môi trường này cung cấp các chức năng như: soạn thảo chương trình, dịch, thực thi chương

trình… Phiên bản được sử dụng ở đây là Turbo C 3.0

Chạy Turbo C cũng giống như chạy các chương trình khác trong môi trường DOS hay Windows, màn hình sẽ xuất hiện menu của Turbo C có dạng như sau:

Trang 22

VII SOẠN THẢO CHƯƠNG TRÌNH

Muốn soạn thảo một chương trình mới ta chọn mục New trong menu File

(File ->New) Trên màn hình sẽ xuất hiện một vùng trống để cho ta soạn thảo nội dung của chương trình Trong quá trình soạn thảo chương trình ta có thể sử dụng các phím sau:

Các phím xem thông tin trợ giúp:

- F1: Xem toàn bộ thông tin trong phần trợ giúp

- Ctrl-F1: Trợ giúp theo ngữ cảnh (tức là khi con trỏ đang ở trong một từ nào

đo, chẳng hạn int mà bạn gõ phím Ctrl-F1 thì bạn sẽ có được các thông tin về kiểu dữ liệu int)

Các phím di chuyển con trỏ trong vùng soạn thảo chương trình:

Trang 24

Các phím, phím tắt thực hiện các thao tác khác:

Thực hiện chương trình

Để thực hiện chương trình hãy dùng Ctrl-F9 (giữ phím Ctrl và gõ phím F9)

Ví dụ: Thực hiện chương trình vừa soạn thảo xong và quan sát trên màn hình để thấy kết quả của việc thực thi chương trình sau đó gõ phím bất kỳ để trở lại với Turbo

Với một chương trình đã có trên đĩa, ta có thể mở nó ra để thực hiện hoặc sửa chữa bổ sung Để mở một chương trình ta dùng File/Open hoặc gõ phím F3 Sau đó

gõ tên tập tin vào hộp File Name hoặc lựa chọn tập tin trong danh sách các tập tin rồi

gõ Enter

VIII THOÁT KHỎI CHƯƠNG TRÌNH

Dùng File/Exit hoặc Alt-X

BÀI TẬP

1 Viết chương trình tính chu vi, diện tích hình tròn biết bán kính

2 Viết chương trình tính chu vi hình chữ nhật biết chiều dài và chiều rộng

3 Viết chương trình xuất ra dòng "hello word"

4 Viết chương trình nhập vào thông tin của một người (họ, tên, tuổi, địa chỉ ) rồi xuất theo thứ tự các thông tin đó ra màn hình

Trang 25

CHƯƠNG 3 CÁC THÀNH PHẦN VÀ CÁC KIỂU DỮ LIỆU CƠ BẢN Giới thiệu

Bài này sẽ trình bày cách sử dụng hệ thống kí hiệu và từ khóa, trình bày các kiểu

dữ liệu căn bản, các loại biến, hằng biểu thức cho từng chương trình cụ thể, so sánh được các lệnh, khối lệnh, thực hiện được việc chạy chương trình

Mục tiêu

- Sử dụng được hệ thống kí hiệu và từ khóa

- Trình bày được các kiểu dữ liệu căn bản

- Vận dụng được các loại biến, hằng biểu thức cho từng chương trình cụ thể

Ngôn ngữ C được xây dựng trên bộ ký tự sau:

- Các ký hiệu đặc biệt khác: , ; : / ? @ # $ % ^ & „ “

- Các dấu ngăn cách không nhìn thấy như dấu cách, dấu nhảy cách tab, dấu xuống dòng

- Dấu gạch nối dưới: _

2 Từ khoá

Từ khóa là các từ dành riêng (reserved words) của C mà người lập trình có thể sử dụng nó trong chương trình tùy theo ý nghĩa của từng từ Ta không được dùng từ khóa

để đặt cho các tên của riêng mình Các từ khóa của Turbo C 3.0 bao gồm:

Asm auto break case cdecl char

Class const continue _cs default delete

Trang 26

do double _ds else enum _es

extern _export far _fastcall float f or

friend goto huge if inline int

interrupt _loadds long near new operator

pascal private protected public register return

_saveregs _seg short signed sizeof _ss

static struct switch template this typedef

union unsigned virtual void volatile while

3 Tên (định danh)

Tên gọi của các thành phần trong chương trình được gọi là định danh(Identifier) Định danh được sử dụng để xác định các thành phần như biến , kiểu, phương thức(method) hay còn được gọi là hàm, đối tượng, lớp

Trong C định danh là một dãy các ký tự gồm các chữ cái, chữ số và một số các

ký hiệu như: ký tự gạch dưới nối câu ‟_‟ , ký hiệu tiền tệ $ và không được bắt đầu bằng chữ số

Chú ý: C phân biệt chữ hoa và chữ thường, ví dụ HUE và hue là hai định danh khác nhau Độ dài(số ký tự) của định danh trong C về mặt lý thuyết là không giới hạn

Ví dụ:

- Các định danh viết đúng: bai_1, hue,

- Các định danh viết sai: 24gio bai tap,

Để trở thành một nhà lập trình chuyên nghiệp, chúng ta nên sử dụng cách đặt tên theo một chuẩn nhất định để dễ phân biệt được các loại khác nhau của các thành phần

sử dụng Chúng ta qui ước cách đặt tên thống nhất như sau:

Định danh cho các lớp: chữ cái đầu của mỗi từ trong định danh đều viết hoa, ví

Trang 27

char ten[50]; /* khai bao bien ten kieu char 50 ky tu */

/*Xuat chuoi ra man hinh*/

printf(“Xin cho biet ten cua ban !”);

scanf(“%s”,ten); /*Doc vao 1 chuoi la ten cua ban*/

printf(“Xin chao ban %s\n ”,ten);

printf(“Chao mung ban den voi Ngon ngu lap trinh C”);

/*Dung chuong trinh, cho go phim*/

Có hai kiểu dữ liệu char: kiểu signed char và unsigned char

Kiểu Phạm vi biểu diễn Số ký

tự

Kích thước

Trang 28

char (signed char) -128 đến 127 256 1 byte

unsigned char 0 đến 255 256 1 byte

Ví dụ sau minh hoạ sự khác nhau giữa hai kiểu dữ liệu trên:

Xét đoạn chương trình sau:

Nhưng cả ch1 và ch2 đều biểu diễn cùng một ký tự có mã 200

Phân loại ký tự: Có thể chia 256 ký tự làm ba nhóm:

Nhóm 1: Nhóm các ký tự điều khiển có mã từ 0 đến 31 Chẳng hạn ký tự mã 13 dùng để chuyển con trỏ về đầu dòng, ký tự 10 chuyển con trỏ xuống dòng dưới (trên cùng một cột) Các ký tự nhóm này nói chung không hiển thị ra màn hình

Nhóm 2: Nhóm các ký tự văn bản có mã từ 32 đến 126 Các ký tự này có thể được đưa ra màn hình hoặc máy in

Nhóm 3: Nhóm các ký tự đồ hoạ có mã số từ 127 đến 255 Các ký tự này có thể đưa ra màn hình nhưng không in ra được (bằng các lệnh DOS)

2 Kiểu số nguyên:

Trong C cho phép sử dụng số nguyên kiểu int, số nguyên dài kiểu long và số nguyên không dấu kiểu unsigned Kích cỡ và phạm vi biểu diễn của chúng được chỉ

ra trong bảng dưới đây:

Kiểu Phạm vi biểu diễn Kích

thước Int -32768 đến 32767 2 byte

unsigned int 0 đến 65535 2 byte

Long -2147483648 đến

2147483647

4 byte

unsigned long 0 đến 4294967295 4 byte

Chú ý: Kiểu ký tự cũng có thể xem là một dạng của kiểu nguyên

Trang 29

3 Kiểu dấu phảy động (số thực):

Trong C cho phép sử dụng ba loại dữ liệu dấu phảy động, đó là float, double và

long double Kích cỡ và phạm vi biểu diễn của chúng được chỉ ra trong bảng dưới

b Hằng số thực: Được viết theo hai cách sau:

Dạng thập phân gồm: Phần nguyên, dấu chấm thập phân, phần thạp phân

Ví dụ: 34.2 -344.122

Dạng khoa học(dạng mũ) gồm: Phần định trị và phần mũ Phần định trị là số nguyên hay số thực dạng thập phân, phần mũ bắt đầu bằng E hoặc e theo sau là số nguyên

Trang 30

Ví dụ: 1234.54E-122

c Hằng ký tự

Hằng ký tự là một ký tự riêng biệt được viết trong cặp

dấu nháy đơn („) Mỗi một ký tự tương ứng với một giá trị

trong bảng mã ASCII Hằng ký tự cũng được xem như trị số

nguyên

Ví dụ: „a‟, „A‟, „0‟, „9‟

Chúng ta có thể thực hiện các phép toán số học trên 2

ký tự (thực chất là thực hiện phép toán trên giá trị ASCII

của chúng) Hằng ký tự còn có thể được viết theo cách:

„\uc1c2c3c4‟ trong đó c1c2c3c4 là một số hệ 16 mà giá trị

của nó chính là mã Unicode của ký tự cần biểu diễn.Ví dụ:

„A‟ hay „\u0041‟

- Một chuỗi không có nội dung “” được gọi là chuỗi rỗng

- Khi lưu trữ trong bộ nhớ, một chuỗi được kết thúc bằng ký tự NULL („\0‟: mã Ascii là 0)

- Để biểu diễn ký tự đặc biệt bên trong chuỗi ta phải thêm dấu \ phía trước

Ví dụ: “I‟m a student” phải viết “I\‟m a student”

“Day la ky tu “dac biet”” phải viết “Day la ky tu \”dac biet\”

3 Khai báo hằng

const <kieu_du_lieu> <ten_hang> = <gia_tri_hang>;

Một hằng phải được khởi tạo khi khai báo, và chỉ khởi tạo duy nhất một lần trong suốt chương trình và không được thay đổi

Ví dụ: const int DOSOI = 100;

Trong khai báo trên, 100 là một hằng số và DOSOI là tên hằng có kiểu nguyên

Ví dụ: minh họa việc sử dụng những biểu tượng hằng

VI CÁC PHÉP TOÁN CỦA C++

1 Phép toán số học

Trang 31

% Phép lấy phần dư 5/3 = 2

về giá trị là true nếu giá trị bên trái của toán tử lớn hơn giá trị bên phải của toán tử

Do vậy 5 > 2 trả về một giá trị là true, trong khi 2 > 5 trả về giá trị false

Các toán tử quan hệ trong ngôn ngữ C được trình bày ở bảng bên dưới

Trang 32

Thứ tự ưu tiên của các toán tử quan hệ là Logic

(2>1)&&(5==2) 0

||

Liên kết giữa hai biểu thức logic Phép Hoặc (or), Giá trị bằng 0 khi cả hai toán hạng bằng có giá trị 0

4 Phép toán tăng giảm

Trong ngôn ngữ lập trình 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 ++ sẽ thêm 1 vào toán hạng của nó, toán tử giảm – sẽ trừ đi 1

Dấu phép toán ++ và có thể đứng trước hoặc đứng sau toán hạng Như vậy ta

có thể viết: ++n, n++, n, n

Trang 33

Sự khác nhau của ++n và n++ ở chỗ: Trong phép toán n++ thì n tăng sau khi giá trị của nó được sử dụng, còn trong ++n thì giá trị của n tăng trước khi giá trị của nó được sử dụng Tương tự đối với –n và n

Ví dụ: giả sử trước mỗi phép tính int i=3, j=15;

Phép toán Tương đương Kết quả

i = ++j j = j+1 ; i=j i=16; j=16

i = j++ i = j ; j = j+1; i = 15 ; j = 16 i++ i = i+1 i=4

1 Các thư viện nhập xuất chuẩn:

Ngôn ngữ C dùng 2 thư viện nhập xuất chuẩn là stdio.h và conio.h Trong đó:

 Thư viện studio.h chứa các hàm như gets(), puts(), scanf(), printf(), fflush(), fwrite()

 Thư viện conio.h chứa các hàm như getch(), putch(), clrscr(), gotoxy() …

Đề sử dụng các thư viện này, ta phải khai báo các chỉ thị #include ở đầu chương trình: #include <stdio.h> và #include <conio.h> Trong đó dấu ngoặc < và > để chỉ thị cho trình biên dịch tìm kiếm thư viện trong danh mục chứa thông tin thư viện chuẩn (trong thư mục Include)

2 Các hàm nhập xuất chuẩn:

a Hàm getchar ():

Cách dùng: Sử dụng câu lệnh: biến = getchar();

Công dụng: Nhận một ký tự vào từ bàn phím và không đưa ra màn hình Hàm

sẽ trả về ký tự nhận được và lưu vào biến

Trang 34

Công dụng: Đưa ký tự ch lên màn hình tại vị trí hiện tại của con trỏ Ký tự sẽ

được hiển thị với màu trắng

 Nếu bộ đệm rỗng, máy sẽ tạm dừng Khi gõ một ký tự thì hàm nhận ngay ký

tự đó (không cần bấm thêm phím Enter như trong các hàm nhập khác) Ký

tự vừa gõ không hiện lên màn hình

Nếu dùng: biến=getch();

Thì biến sẽ chứa ký tự đọc vào

d Hàm putch():

Cách dùng: Sử dụng câu lệnh: putch(ch);

Công dụng: Đưa ký tự ch lên màn hình tại vị trí hiện tại của con trỏ Ký tự sẽ

được hiển thị theo màu xác định trong hàm textcolor

e Hàm printf:

Cách dùng:

prinf(điều khiển, đối số 1, đối số 2, );

Hàm printf chuyển, tạo khuôn dạng và in các đối của nó ra thiết bị ra chuẩn

dưới sự điều khiển của chuỗi điều khiển Chuỗi điều khiển chứa hai kiểu đối tượng:

các ký tự thông thường, chúng sẽ được đưa ra trực tiếp thiết bị ra, và các đặc tả

chuyển dạng, mỗi đặc tả sẽ tạo ra việc đổi dạng và in đối tiếp sau của printf

Chuỗi điều khiển có thể có các ký tự điều khiển:

\n sang dòng mới

\f sang trang mới

\b lùi lại một bước

\t dấu tab

Trang 35

Dạng tổng quát của đặc tả:

%[-][fw][.pp]ký tự chuyển dạng Mỗi đặc tả chuyển dạng đều được đưa vào bằng ký tự % và kết thúc bởi một ký

tự chuyển dạng Giữa % và ký tự chuyển dạng có thể có:

Dấu trừ:

Khi không có dấu trừ thì kết quả ra được dồn về bên phải nếu độ dài thực tế của kết quả ra nhỏ hơn độ rộng tối thiểu fw dành cho nó Các vị trí dư thừa sẽ được lấp đầy bằng các khoảng trống Riêng đối với các trường số, nếu dãy số fw bắt đầu bằng

số 0 thì các vị trí dư thừa bên trái sẽ được lấp đầy bằng các số 0

Khi có dấu trừ thì kết quả được dồn về bên trái và các vị trí dư thừa về bên phải (nếu có) luôn được lấp đầy bằng các khoảng trống

fw: Khi fw lớn hơn độ dài thực tế của kết quả ra thì các vị trí dư thừa sẽ được

lấp đầy bởi các khoảng trống hoặc số 0 và nội dung của kết quả ra sẽ được đẩy

về bên phải hoặc bên trái Khi không có fw hoặc fw nhỏ hơn hay bằng độ dài thực tế của kết quả ra thì độ rộng trên thiết bị ra dành cho kết quả sẽ bằng chính độ dài của

nó Tại vị trí của fw ta có thể đặt dấu *, khi đó fw được xác định bởi giá trị nguyên của đối tương ứng

"abcdef" 8 không có abcdef

"abcdef" 08 có abcdef

"abcdef" 08 không có abcdef

pp: Tham số pp chỉ được sử dụng khi đối tương ứng là một chuỗi ký tự hoặc

một giá trị kiểu float hay double Trong trường hợp đối tương ứng có giá trị kiểu float hay double thì pp là độ chính xác của trường ra Nói một cách cụ thể hơn giá trị in ra

sẽ có pp chữ số sau số thập phân

Khi vắng mặt pp thì độ chính xác sẽ được xem là 6

Khi đối là chuỗi ký tự:

Trang 36

Nếu pp nhỏ hơn độ dài của chuỗi thì chỉ pp ký tự đầu tiên của chuỗi được in ra Nếu không có pp hoặc nếu pp lớn hơn hay bằng độ dài của chuỗi thì cả chuỗi ký tự sẽ được in ra

"alphabeta" 8 3 không có alpha 3

"alphabeta" không có không không có alphabeta 9

"alpha" 8 6 có alpha 5

Các ký tự chuyển dạng và ý nghĩa của nó:

Ký tự chuyển dạng là một hoặc một dãy ký hiệu xác định quy tắc chuyển dạng

và dạng in ra của đối tương ứng Như vậy sẽ có tình trạng cùng một số sẽ được in ra theo các dạng khác nhau Cần phải sử dụng các ký tự chuyển dạng theo đúng qui tắc định sẵn Bảng sau cho các thông tin về các ký tự chuyển dạng

Ký tự chuyển dạng Ý nghĩa

d Đối được chuyển sang số nguyên hệ thập phân

o Đối được chuyển sang hệ tám không dấu (không có số

0 đứng trước)

x Đối được chuyển sang hệ mưới sáu không dấu (không

có 0x đứng trước)

u Đối được chuyển sang hệ thập phân không dấu

c Đối được coi là một ký tự riêng biệt

s Đối là chuỗi ký tự, các ký tự trong chuỗi được in cho

tới khi gặp ký tự không hoặc cho tới khi đủ số lượng ký

tự được xác định bởi các đặc tả về độ chính xác pp

e Đối được xem là float hoặc double và được chuyển

sang dạng thập phân có dạng [-]m.n nE[+ hoặc -] với

độ dài của chuỗi chứa n là pp

f Đối được xem là float hoặc double và được chuyển

sang dạng thập phân có dạng [-]m m.n n với độ dài của chuỗi chứa n là pp Độ chính xác mặc định là 6

Lưu ý rằng độ chính xác không xác định ra số các chữ

Trang 37

số có nghĩa phải in theo khuôn dạng f

g Dùng %e hoặc %f, tuỳ theo loại nào ngắn hơn, không

f Hàm scanf:

Hàm scanf là hàm đọc thông tin từ thiết bị vào chuẩn (bàn phím), chuyển dịch chúng (thành số nguyên, số thực, ký tự vv ) rồi lưu trữ nó vào bộ nhớ theo các địa chỉ xác định

Cách dùng:

scanf(điều khiển,đối 1, đối 2, );

Chuỗi điều khiển chứa các đặc tả chuyển dạng, mỗi đặc tả sẽ tạo ra việc đổi

dạng biến tiếp sau của scanf

Đặc tả có thể viết một cách tổng quát như sau:

%[*][d d]ký tự chuyển dạng

Trang 38

Việc có mặt của dấu * nói lên rằng trường vào vẫn được dò đọc bình thường, nhưng giá trị của nó bị bỏ qua (không được lưu vào bộ nhớ) Như vậy đặc tả chứa dấu

* sẽ không có đối tương ứng

d d là một dãy số xác định chiều dài cực đại của trường vào, ý nghĩa của nó được giải thích như sau:

 Nếu tham số d d vắng mặt hoặc nếu giá trị của nó lớn hơn hay bằng độ dài của trường vào tương ứng thì toàn bộ trường vào sẽ được đọc, nội dung của

nó được dịch và được gán cho địa chỉ tương ứng (nếu không có dấu *)

 Nếu giá trị của d d nhỏ hơn độ dài của trường vào thì chỉ phần đầu của trường có kích cỡ bằng d d được đọc và gán cho địa chỉ của biến tương ứng Phần còn lại của trường sẽ được xem xét bởi các đặc tả và đối tương ứng tiếp theo

124 cho biến a chuỗi "523" và dấu kết thúc \0 cho biến ch chuỗi "48a" và dấu kết thúc \0 cho biến ct

Trang 39

Các ký tự chuyển dạng và ý nghĩa của nó:

C Vào một ký tự, đối tương ứng là con trỏ ký tự Có xét ký tự

khoảng trắng

D Vào một giá trị kiểu int, đối tương ứng là con trỏ kiểu int Trường

phải vào là số nguyên

Ld Vào một giá trị kiểu long, đối tương ứng là con trỏ kiểu long

Trường phải vào là số nguyên

O Vào một giá trị kiểu int hệ 8, đối tương ứng là con trỏ kiểu int

Trường phải vào là số nguyên hệ 8

Lo Vào một giá trị kiểu long hệ 8, đối tương ứng là con trỏ kiểu long

Trường phải vào là số nguyên hệ 8

X Vào một giá trị kiểu int hệ 16, đối tương ứng là con trỏ kiểu int

Trường phải vào là số nguyên hệ 16

Lx Vào một giá trị kiểu long hệ 16, đối tương ứng là con trỏ kiểu

long Trường phải vào là số nguyên hệ 16

f hay e Vào một giá trị kiểu float, đối tương ứng là con trỏ float, trường

vào phải là số dấu phảy động

lf hay

le

Vào một giá trị kiểu double, đối tương ứng là con trỏ double,

trường vào phải là số dấu phảy động

S Vào một giá trị kiểu double, đối tương ứng là con trỏ kiểu char,

trường vào phải là dãy ký tự bất kỳ không chứa các dấu cách và

các dấu xuống dòng

[Dãy ký tự], [^Dãy ký tự] Các ký tự trên dòng vào sẽ lần lượt được đọc cho đến khi nào gặp một ký tự không thuộc tập các ký tự đặt trong[] Đối tương ứng là con trỏ kiểu char Trường vào là dãy ký tự bất kỳ (khoảng trắng được xem như một ký tự)

Ví dụ:

int a,b;

char ch[10], ck[10];

scanf("%d%[0123456789]%[^0123456789]%3d",&a,ch,ck,&b);

Nếu dòng nhập vào là: 35 13145 xyz 584235

Thì trình biên dịch sẽ gán: giá trị 35 cho biến a, chuỗi "13145" và dấu kết thúc chuỗi „\0‟ cho biến ch, chuỗi "xyz” và dấu kết thúc chuỗi “\0” cho ck , giá trị 584 cho biến b

Trang 40

printf(“\n x+y = %#x\n x-y = %#x”, x+y, x-y );

3 Biểu diễn các số sau dưới dạng nhị phân : 127, -129, 12.12

4 Đối với các dữ liệu sau, ta dùng kiểu dữ liệu nào hợp lý:

Ngày, tháng, năm sinh ; điểm trung bình môn học

5 Viết chương trình nhập số giây, xuất ra dạng giờ : phút : giây

6 Viết chương trình nhập giờ : phút : giây, xuất ra số giây

Ngày đăng: 30/08/2022, 12:13

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm