« Home « Kết quả tìm kiếm

Giáo trình ngôn ngữ C++ Part 5


Tóm tắt Xem thử

- Trong chương trình có thể có nhiều câu lệnh, mỗi câu lệnh đảm nhiệm một chức năng nào đó.
- Trong C một lệnh nói chung có thể viết trên một hay nhiều dòng (trừ xâu kí tự và macro) và kết thúc bởi dấu chấm phẩy.
- và cũng có thể viết nhiều lệnh trên một dòng, giữa các thành phần của lệnh có thể có các dấu cách..
- Ví dụ:.
- Một lệnh có thể viết trên nhiều dòng nhưng trong 1 xâu kí tự hay định nghĩa macro thì chúng ta phải viết trên 1 dòng, trường hợp nhất thiết phải viết trên nhiều dòng thì bạn phải thêm kí tự \ vào cuối dòng trên để báo cho chương trình dịch nối nội dung dòng dưới vào cuối của dòng trên..
- Ví dụ.
- Các lệnh cúa chương trình C bao gồm 2 loại đó là câu lệnh đơn và khối lệnh (câu lệnh ghép - nhóm lệnh)..
- Trong chương trình chúng ta có thể thêm các lời chú thích để giải thích câu lệnh hoặc chức năng của chương trình.
- nhằm cho chương trình dễ đọc..
- có thể trên một hoặc nhiều dòng.
- Với các chương trình dịch của C++ bạn có thể sử dụng.
- Nhập và xuất dữ liệu.
- Trong phần này chúng ta giới thiệu cú pháp và ý nghĩa một số hàm cơ bản để nhập dữ liệu từ thiết bị vào chuẩn là bàn phím và xuất dữ liệu ra màn hình máy tính.
- ¾ Một số hàm nhập dữ liệu từ bàn phím a.
- Hàm getch, getche nhập 1 ký tự.
- Chức năng: Hai hàm này thực hiện đợi người dùng nhập một ký tự từ bàn phím và trả về một số nguyên là mã của kí tự được bấm, ví dụ bạn gõ phím ‘a’ thì hàm sẽ trả về 97..
- Sự khác nhau giữa hai hàm là hàm getche hiện kí tự được nhập lên màn hình, còn getch thì không..
- Khi phím được bấm là phím mở rộng thì hệ thống sẽ đẩy vào bộ đệm nhập liệu 2 byte, byte thứ nhất có giá trị 0, byte thứ 2 là mã mở rộng của phím đó.
- Ví dụ khi bạn bấm phím mũi tên lên ↑ thì hai byte có giá trị là 0 72 và hàm getch hay getche trả về 0, byte có giá trị 72 vẫn còn lưu trong bộ đệm nhập liệu, nếu ta gọi getch hoặc getche sẽ nhận được giá trị này..
- Đây là một trong những hàm nhập dữ liệu phổ biến nhất của C, nó cho phép nhập nhiều loại dữ liệu (có các kiểu khác nhau).
- Khi nhập dữ liệu bằng hàm này bạn phải xác định địa chỉ (vùng nhớ, hay biến) để lưu dữ liệu và kiểu của dữ liệu cần nhập..
- Hàm scanf cho phép chúng ta nhập dữ liệu từ bàn phím theo khuôn dạng được xác định bởi xâu kí tự format, dữ liệu nhập vào sẽ lưu vào các biến hoặc vùng nhớ có địa chỉ tương ứng là các con trỏ trong ds_các_con_trỏ ( có thể có nhiều con trỏ, mỗi con trỏ cách nhau bởi dấu phẩy)..
- Ví dụ: nhập giá trị cho 3 biến a có kiểu int, x có kiểu float, và b có kiểu int.
- Trong cú pháp trên format là một xâu quy định quy cách dữ liệu cần nhập, gồm nhiều đặc tả dữ liệu tương ứng với các kiểu của con trỏ trong phần ds_các_con_trỏ, có bao nhiêu con trỏ thì cần đúng bấy nhiêu đặc tả, đặc tả thứ nhất quy định khuôn dạng dữ liệu cho con trỏ thứ nhất, đặc tả thứ 2 quy định khuôn dạng dữ liệu cho con trỏ thứ 2,....
- Mỗi đặc tả bắt đầu bằng dấu % có dạng sau ( các thành phần trong.
- %[*][n]<ký_tự_định_kiểu>.
- n là một số nguyên dương quy định độ dài tối đa (tính theo số kí tự) được nhập cho thành phần tương ứng.
- <ký_tự_định_kiểu>.
- là kí tự quy định kiểu dữ liệu cần nhập ví dụ bạn muốn nhập số nguyên kiểu int thì kí tự định kiểu là d, kiểu ký tự là c.
- Các kí tự định kiểu khác bạn xem bảng sau..
- Kí tự định kiểu.
- dữ liệu nhập kiểu con trỏ của đối nhập liệu d integer int *arg.
- đây cũng là thành phần tuỳ chọn, nếu có thì tác dụng của nó là sẽ bỏ qua một thành phần dữ liệu được xác định bởi đặc tả này, như vậy sẽ không có đối tương ứng với đặc tả này..
- trong dòng này chúng ta sẽ nhập 1 thành phần (gọi là 1 trường) số nguyên vào a, sau đó bỏ qua một thành phần là kí tự, và tiếp theo là một số nguyên vào b..
- Quy cách nhập dữ liệu.
- Khi chúng ta nhập dữ liệu từ bàn phím, kết thúc nhập bằng Enter.
- thì tất cả những kí tự chúng ta gõ trên bàn phím đều được lưu trong vùng đệm nhập dữ liệu (gọi là dòng vào- stdin.
- dữ liệu trên dòng vào này sẽ được cắt thành từng trường tuần tự từ trái qua phải và gán vào các biến (hoặc vùng nhớ) xác định tương ứng bởi các con trỏ, các phần đã tách được sẽ bị loại khỏi dòng vào..
- Trước khi tách giá trị một trường thì các khoảng trắng phía trước của trường nếu có sẽ bị loại bỏ.
- Nếu trong đặc tả không có thành phần (n) quy định độ dài tối đa một trường thì các trường được xác định bởi các ký tự dấu cách, tab, enter (gọi chung là khoảng trắng ký hiệu là ) hoặc khi gặp ký tự không phù hợp với đặc tả hiện tại..
- Nếu trên dòng vào có nhiều hơn các thành phần yêu cầu của hàm nhập thì các thành phần chưa được nhận vẫn còn lưu trên dòng vào..
- Nếu trong đặc tả có thành phần xác định độ rộng tối đa (n) thì một trường sẽ kết thúc hoặc khi gặp khoảng trống, hay kí tự không phù hợp hoặc đã đủ độ dài n.
- Số các đặc tả phải tương ứng với số con trỏ trong danh sách con trỏ.
- Ký tự định kiểu trong đặc tả phải phù hợp với kiểu của con trỏ cần nhập liệu..
- Dữ liệu nhập từ bàn phím phải phù hợp với các đặc tả..
- Hàm scanf trả về số nguyên là số trường được nhập dữ liệu c.
- Chức năng của hàm gets là nhập một xâu kí tự từ bàn phím, khác với hàm scanf với đặc tả “%s” kết thúc nội xâu khi gặp dấu cách hoặc enter, tức là xâu không thể có dấu cách, hàm gets chỉ kết thúc khi gặp enter (kí tự ‘\n.
- Xâu kí tự được ghi vào s (với s là mảng các kí tự hoặc con trỏ kí tự), dấu kết thúc xâu (‘\0.
- kí tự có mã 0 ) được tự động thêm vào cuối xâu.
- Chú ý: hàm gets loại bỏ ký tự Enter(‘\n’) trên dòng vào nhưng ký tự này không được đưa vào s mà tự động thêm ký tự kết thúc xâu (’\0’) vào cuối của s..
- ¾ Một số hàm xuất dữ liệu ra màn hình.
- Hàm prinntf là hàm in dữ liệu ra màn hình rất đa dạng của ngôn ngữ C.
- Cũng như hàm scanf, hàm printf cũng yêu cầu chúng ta phải cung cấp các giá trị và định dạng của dữ liệu cần in thông qua các đối của hàm..
- <danh_sách_các_giá trị>]);.
- Trong đó: <danh_sách_các_giá trị>.
- là phần tuỳ chọn, nếu có thì đó là các giá trị cần in, các giá trị (có thể là biến, hằng, lời gọi hàm, hay biểu thức nói chung) cách nhau bởi dấu phẩy..
- Lưu ý: số giá trị trong <danh_sách_các_giá trị>.
- có thể nhiều hơn số các đặc tả, khi đó các giá trị cuối (không có đặc tả tương ứng) sẽ bị bỏ qua..
- format là xâu ký tự điều khiển, nhiệm vụ chính của nó là điều khiển khuôn dạng thông tin được in ra màn hình..
- Trong format gồm ba loại: các kí tự điều khiển, các đặc tả, các kí tự thường.
- Các ký tự điều khiển.
- Đây là các kí tự đặc biệt, bắt đầu bằng kí tự \ tiếp theo là 1 kí tự dùng để điều khiển: chuyển con trỏ màn hình, vị trí in dữ liệu,...
- \n : chuyển con trỏ màn hình xuống dòng mới.
- Các ký tự thường.
- Là những kí tự không thuộc loại điều khiển và đặc tả, các kí tự này được in ra màn hình đúng như nó xuất hiện trong format.
- Ngoài ra còn có một vài kí tự đặc biệt mà khi muốn in ra màn hình chúng ta phải đặt nó ngay sau kí tự.
- Các đặc tả.
- Trong format có thể có nhiều đặc tả, các đặc tả quy định khuôn dạng dữ liệu cần in ra, mỗi đặc tả có dạng như sau.
- %[-][n[.m]]<ký_tự_định_kiểu>.
- Ý nghĩa các thành phần.
- à Thành phần <ký_tự_định_kiểu>.
- đây là kí tự quy định kiểu của dữ liệu cần in ví dụ bạn muốn in một giá trị int thì <ký_tự_định_kiểu>.
- là d, bạn muốn in một kí tự thì kí tự định kiểu là c.
- Kiểu của giá trị cần in.
- Khuôn dạng in ra.
- d int số nguyên hệ 10.
- i int số nguyên hệ 10.
- c char kí tự.
- s char * xâu kí tự.
- p con trỏ in giá trị con trỏ dạng Segment:Offset hoặc Offset tuỳ mô hình bộ nhớ được sử dụng.
- để định kiểu dữ liệu in ra là số nguyên dài (long), số nguyên dài không dấu (unsigned long),...
- à Thành phần [n[.m.
- n, m là các số nguyên dương, n quy định độ rộng của thông tin (tính theo số ký tự) được in ra màn hình, m số chữ số cho phần thập phân (chỉ dùng cho số thực), nếu có m thì số thực được làm tròn với m chữ số thập phân..
- Nếu độ rộng thực sự của giá trị cần in <.
- độ rộng được dành cho nó (n) thì các dấu trống được thêm vào (bên trái hay bên phải tuỳ vào sự có mặt của thành phần.
- Lưu ý: có thể thay số n bằng kí tự.
- à Thành phần.
- Xác định kiểu căn bên trái hay bên phải.
- Khi một giá trị được in ra trên màn hình, nếu độ rộng thực sự của nó nhỏ hơn độ rộng xác định bởi thành phần n, ngầm định chúng được căn bên phải (trong vùng n kí tự trên màn hình), nếu có dấu - thì dữ liệu được căn trái..
- Giá trị trả về của hàm printf là tổng độ dài thông tin được in (tính theo ký tự)..
- Ví dụ 1: chương trình nhập 1 kí tự từ bàn phím, in kí tự và mã của nó ra màn hình.
- khi thực hiện chương trình trên chúng ta sẽ được:.
- như vậy cùng là giá trị c (mã của kí tự chúng ta gõ từ bàn phím), nhưng với đặc tả khác nhau sẽ cho chúng ta khuôn dạng khác nhau (trong ví dụ với đặc tả %d in ra 65, nhưng với %c lại in ra kí tự A)..
- Ví dụ 2: chương trình nhập 2 số nguyên a, b từ bàn phím (b !=0), in tổng, hiệu, tích, thương phần nguyên a/b.
- kết quả chạy chương trình là.
- Chức năng: Hàm này in kí tự có mã là ch ra màn hình tại vị trí hiện tại của con trỏ, chuyển con trỏ sang phải 1 ký tự, hàm trả về số nguyên chính là mã kí tự in ra..
- Các bạn biết là một kí tự chỉ có kích thước 1 byte, nhưng trong hàm putch lại có đối là int (2 byte), trong trường hợp giá trị của ch >255 thì kí tự được in ra là kí tự có mã ( ch % 256), và đây cũng là giá trị mà putch trả về.
- Cũng giống như với printf một số kí tự đặc biệt được coi là ký tự điều khiển chứ không phải kí tự in ra màn hình..
- Chức năng: Hàm này in xâu kí tự s ra màn hình tại vị trí hiện tại của con trỏ, sau đó tự động chuyển con trỏ sang dòng mới.
- Trong trường hợp in thành công hàm trả về số nguyên dương, ngược lại trả về -1(EOF).

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt