Chương trình C và C++
lượt xem 24
download
Ngôn ngữ C do Brian W.Kerningham và Dennis M.Ritchice phát triển vào năm 1970 tại phòng thí nghiệm BELL (Hoa kỳ) với mục đích ban đầu để phát triển hệ điều hành UNIX. Phần lớn các ý tưởng quan trọng nhất của C xuất phát từ ngôn ngữ có tên BCPL do Martin Richards nghiên cứu. ảnh hưởng của BCPL gián tiếp thông qua ngôn ngữ B do Ken Thompson viết vào năm 1970 cho hệ điều hành UNIX chạy trên họ máy tính PDP- 7...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Chương trình C và C++
- Ch¬ng tr×nh C vµ C++ CHƯƠNG 1. NHỮNG KHÁI NIỆM CƠ BẢN VỀ NGÔN NGỮ C...............3 1.1. Lịch sử hình thành và phát triển.......................................................3 1.2. Các tính chất đặc trưng..................................................................... 3 1.3. Cấu trúc cơ bản của một chương trình C.........................................3 #include ................................................................................... 5 1.4. Bộ chữ viết, từ khoá, tên ................................................................. 5 1.4.1. Bộ chữ viết.................................................................................. 5 1.4.2. Tên ............................................................................................. 6 1.4.3 Từ khoá........................................................................................ 6 1.5. Một số kiểu dữ liệu cơ bản............................................................... 6 1.6. Biến.................................................................................................... 7 1.7. Hằng số............................................................................................. 7 1.8. Biểu thức............................................................................................ 9 1.9. Các phép toán................................................................................... 9 1.9.1. Các phép toán số học:............................................................. 10 1.9.2. Các phép toán quan hệ:...........................................................10 1.9.3. Các phép toán logic.................................................................. 10 1.9.4. Các phép toán tăng, giảm........................................................12 1.9.5. Phép toán lấy địa chỉ biến (&)..................................................12 1.9.6. Phép toán chuyển đổi kiểu giá trị:...........................................12 - Khi toán hạng trong một phép toán có kiểu khác nhau thì kiểu thấp hơn được chuyển thành kiểu cao hơn: int->long->float->double ..........12 1.9.7. Biểu thức gán............................................................................ 13 1.9.8. Biểu thức điều kiện................................................................... 13 CHƯƠNG 2. CÁC CÂU LỆNH ĐIỀU KHIỂN CHƯƠNG TRÌNH..............14 2.1. Câu lệnh đơn................................................................................... 14 2.2. Câu lệnh ghép................................................................................. 14 2.3. Vào/ra .............................................................................................. 14 2.3.1. Hàm printf.................................................................................. 14 2.3.2. Hàm scanf................................................................................. 15 2.3.3.Ví dụ minh hoạ:......................................................................... 16 2.4. Các câu lệnh điều khiển chương trình...........................................16 2.4. 1. Câu lệnh if – else.....................................................................16 thay cho................................................................................................... 16 2.4.2. Cấu trúc điều khiển switch.......................................................17 a./ Cú pháp câu lệnh ............................................................................. 17 2.4.3. Cấu trúc lặp while..................................................................... 18 { int dau,i,n;........................................................................................... 20 2.4.4. Cấu trúc lặp do...while .............................................................20 2.4.5. Cấu trúc lặp for.........................................................................22 2.4.6. Toán tử break và continue........................................................24 CHƯƠNG 3. CON TRỎ VÀ MẢNG...........................................................26 3.1. Mảng................................................................................................ 26 3.1.1. Khái niệm và định nghĩa...........................................................26 3.1.2. Khai báo mảng..........................................................................26 Trang 1
- Ch¬ng tr×nh C vµ C++ 3.1.3. Truy nhập vào các phần tử của mảng.....................................27 3.1.4. Xâu kí tự.................................................................................... 28 3.2. Con trỏ............................................................................................. 30 3.2.1. Khái niệm và cách khai báo con trỏ.........................................30 3.2.2. Con trỏ và địa chỉ biến............................................................. 30 3.2.3. Sử dụng các con trỏ................................................................. 30 3.2.4. Các phép toán trên con trỏ.......................................................31 3.2.5. Con trỏ kiểu void....................................................................... 32 3.3. Liên hệ giữa con trỏ và mảng.........................................................32 3.3.1. Con trỏ và mảng một chiều......................................................32 3.3.2. Con trỏ và xâu kí tự.................................................................. 33 3.3.3. Con trỏ và mảng nhiều chiều...................................................33 CHƯƠNG 4. CẤU TRÚC........................................................................... 34 4.1. Cấu trúc........................................................................................... 34 4.1.1. Định nghĩa cấu trúc.................................................................. 34 4.1.2. Khai báo cấu trúc...................................................................... 34 4.1.3. Định nghĩa kiểu bằng typedef ..................................................35 4.1.4. Truy nhập đến các thành phần của cấu trúc ..........................36 4.1.5. Thành phần kiểu FIELD (nhóm bit)..........................................37 4.2. Kiểu hợp (union).............................................................................. 38 CHƯƠNG 5. HÀM VÀ CẤU TRÚC CHƯƠNG TRÌNH.............................39 5.1. Mở đầu:............................................................................................ 39 5. 2. Ví dụ đơn giản về chương trình có hàm: ......................................39 5. 3. Quy tắc xây dựng một hàm............................................................40 5. 4. Quy tắc hoạt động của hàm:.........................................................41 5. 5. Cấu trúc tổng quát của chương trình có hàm: ..............................41 5.6. Xây dựng và sử dụng hàm..............................................................41 5.6.1. Các khái niệm liên quan đến hàm: ...........................................41 5.6.2. Xây dựng hàm:.......................................................................... 41 5.6.3. Sử dụng hàm............................................................................ 42 5.6.4. Nguyên tắc hoạt động của hàm...............................................42 5.7. Các tệp header................................................................................ 43 5.8. Cấp lưu trữ và phạm vi của các đối tượng.....................................44 5.9. Đệ qui............................................................................................... 47 CHƯƠNG 6. ĐỒ HOẠ............................................................................... 48 6.1. Các chế độ đồ hoạ, hệ toạ độ........................................................48 2.6. Định nghĩa chồng hàm.................................................................... 62 2.7. Tham số ngầm định trong lời gọi hàm............................................62 2.8. Bổ sung thêm các toán tử quản lý bộ nhớ động: new và delete . ..63 CHƯƠNG 3. ĐỐI TƯỢNG VÀ LỚP.........................................................64 3.1. Đối tượng......................................................................................... 64 3.2. Lớp................................................................................................... 64 3.2.1. Khai báo lớp.............................................................................. 64 3.2.2. Tạo đối tượng........................................................................... 66 3.2.3. Các thành phần dữ liệu:...........................................................66 Trang 2
- Ch¬ng tr×nh C vµ C++ 3.2.4. Hàm thành phần (phương thức) ..............................................67 3.2.5. Từ khoá private và public .......................................................67 3.3.Hàm thiết lập(constructor) ................................................................68 3.4 Hàm huỷ bỏ(desreuctor).................................................................. 69 3.5 Hàm thiết lập sao chép(copy constructor) .......................................71 3.6 Hàm bạn, lớp bạn............................................................................. 74 CHƯƠNG 1. NHỮNG KHÁI NIỆM CƠ BẢN VỀ NGÔN NGỮ C 1.1. Lịch sử hình thành và phát triển Ngôn ngữ C do Brian W.Kerningham và Dennis M.Ritchice phát triển vào năm 1970 tại phòng thí nghiệm BELL (Hoa kỳ) với mục đích ban đầu để phát triển hệ điều hành UNIX. Phần lớn các ý tưởng quan trọng nhất của C xuất phát từ ngôn ngữ có tên BCPL do Martin Richards nghiên cứu. ảnh hưởng của BCPL gián tiếp thông qua ngôn ngữ B do Ken Thompson viết vào năm 1970 cho hệ điều hành UNIX chạy trên họ máy tính PDP- 7 Từ khi ra đời ngôn ngữ lập trình C có nhiều loại chương trình dịch C khác nhau như: Turbo C của hãng Borland Inc, Quick C, Microsoft C, VC của hãng Microsoft Corp, Lattice C của Lattice Sự phát triển của ngôn ngữ lập trình trong những năm 1980 đã đưa đến phong cách lập trình hướng đối tượng (OOP – Object Oriented Programing) mà một trong 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à ngôn ngữ lập trình C. 1.2. Các tính chất đặc trưng Ngôn ngữ lập trình C là một ngôn ngữ lập trình vạn năng dùng để viết các ứng dụng thực tế như: Quản lý văn bản, cơ sở dữ liệu, ghép nối máy tính... Ngôn ngữ lập trình C là ngôn ngữ lập trình uyển chuyển, có độ thích nghi cao... Ngôn ngữ C là một ngôn ngữ được sử dụng rộng rãi trong các lĩnh vực chuyên nghiệp vì đáp ứng được các yêu cầu: hiệu quả cao trong soạn thảo chương trình và dịch ra mã máy; tiếp cận trực tiếp với các thiết bị phần cứng Ngôn ngữ C thực hiện các cơ chế như các phép toán xử lý trực tiếp các đ ối tượng hợp thành, các cơ chế vào ra, phương pháp truy nhập tệp bằng những lời gọi hàm trong thư viện C đưa ra các kết cấu điều khiển cơ bản cho các chương trình có cấu trúc; cung cấp con trỏ và khả năng định địa chỉ số học. Các định nghĩa hàm không được lồng nhau 1.3. Cấu trúc cơ bản của một chương trình C Trước tiên ta xét ví du: Viết chương trình C hiện dòng thông báo “ Turbo C” ra màn hình. /* Chương trình hiện lên dòng thông báo trên màn hình*/ Trang 3
- Ch¬ng tr×nh C vµ C++ #include #include main() clrscr();/* Câu lệnh xoá màn hình*/ { printf(“Turbo C ”); getch(); } Thực hiện chương trình: Các bước để thực hiện chương trình này như sau: - Tạo ra chương trình nguồn có tên VIDU.C bằng hệ soạn thảo của Turbo C hoặc trên một hệ soạn thảo nào đó - Dịch và chương trình bằng CTRL + F9 để tạo ra một tệp chương trình nếu không có lỗi Giải thích chương trình Một chương trình C với bất kỳ kích thước nào đều bao gồm một số hàm, các hàm này sẽ xác định các thao tác tính toán thực tế cần phải thực hiện. Các hàm của C cũng tương tự như các hàm và thủ tục của chương trình viết bằng Pascal. Trong chương trình ví dụ trên main() là một hàm như vậy. Thông thường chúng ta có thể lấy bất kỳ tên nào để đặt cho tên hàm, nhưng hàm main() là một hàm đặc biệt. Chương trình C luôn bắt đầu thực hiện tại điểm đầu của hàm này và kết thúc khi hàm này kết thúc. Điều này có nghĩa mọi chương trình viết bằng ngôn ngữ lập trình C đều có một và chỉ một hàm main() đặt ở đâu đó trong chương trình. Hàm main() này thường gọi các hàm khác để thực hiện công việc của chương trình, một số hàm nằm trong chương trình, số khác nằm trong các thư viện chuẩn. Hàm printf () có trong thư viện chuẩn được sử dụng mà không phải viết lại, có chức năng đưa kết quả ra thiết bị đầu ra. Câu lệnh printf (“ Turbo C”); sẽ đưa ra màn hình dòng chữ nằm trong các dấu nháy kép. Có thể dùng hàm printf để trình bày các đối tượng dữ liệu khác nhau Khai báo tệp tiêu đề Trong ngôn ngữ lập trình Pascal chặng hạn khi ta muốn sử dụng lệnh xoá màn hình “ Clrscr;” hay lệnh di chuyển con trỏ màn hình “Gotoxy(x,y)” v.v... Ta thấy các hàm và thủ tục này nằm trong thư viên chuẩn CRT do đó muốn chương trình sử dụng được các hàm và thủ tục đó thì tại đầu chương trình ta phải khai báo : USES CRT; Tương tự như vậy trong ngôn ngữ lập trình C khi sử dụng các hàm chuẩn trong các thư viện chuẩn chúng ta phải khai báo tệp tiêu đề (header file) chứa các hàm nguyên mẫu tương ứng các hàm đó, các lệnh được bắt đầu bằng #include theo sau là tệp tiêu đề Có hai cách viết như sau: Trang 4
- Ch¬ng tr×nh C vµ C++ Cách 1: #include Ví dụ: #include #include Cách 2: #include “[đường dẫn\]tentep” Ví dụ: #include “a:\Baitap\Bai2.C” #include “conio.h” Tác dụng: Trước khi dịch, chương trình dịch sẽ tìm tệp theo tentep và đường dẫn đã chỉ ra trong #include. Nếu tìm thấy thì nội dung của tệp này được gọi ra và chèn vào tệp nguồn đang xét đúng vị trí của #include. Nếu không tìm thấy thì thông báo lỗi. Hai cách khai báo trên khác nhau ở chỗ. Nếu tentep được chỉ ra trong khai báo #include không có đường dẫn thì Cách 1: tự động tìm tentep trong thư mục INCLUDE Cách 2: tự động tìm tentep trong thư mục hiện thời nếu không có thì tìm trong thư mục INCLUDE Trong thí dụ trên chúng ta có sử dụng hàm printf() là hàm chuẩn được khai báo trong tệp tiêu đề stdio.h và hàm getch(), clrscr() được khai báo trong tệp tiêu đề conio.h. Do đó trong chương trình có hai dòng khai báo sau ở đầu chương trình: #include #include Chú thích và dấu kết thúc câu lệnh Trong ngôn ngữ lập trình C những phần được viết giữa /* và */ được gọi là phần chú thích, giải thích mục đích của chương trình. Mọi ký tự nằm giữa /* và */ khi dịch chương trình dịch bỏ qua, ta được phép dùng chúng để minh hoạ cho các thành phần chương trình làm cho chương trình dễ hiểu, mạch lạc. Lời chú thích có thể xuất hiện bất kỳ đâu trong chương trình và có thể trải trên nhiều dòng khác nhau trong chương trình. Trong chương trình viết bằng ngôn ngữ C mỗi câu lệnh có thể viết trên một hay nhiều dòng và phải kết thúc bằng dấu chấm phẩy. 1.4. Bộ chữ viết, từ khoá, tên 1.4.1. Bộ chữ viết Mỗi ngôn ngữ lập trình đều được xây dựng từ một bộ ký tự nào đó. Các ký tự được nhóm lại theo nhiều cách khác nhau để lập lên các từ. Đến lượt mình các từ được liên kết theo một quy tắc nào đó để tạo thành các câu lệnh. Một chương trình bao gồm nhiều câu lệnh và diễn đạt một thuật toán để giải một bài toán nào đó. Ngôn ngữ C được xây dựng trên bộ ký tự sau: Các chữ cái hoa: A B C .... Z Các chữ cái thường: a b c ... z Trang 5
- Ch¬ng tr×nh C vµ C++ Các chữ số: 0 1 2... 9 Các kí hiệu toán học: + - * / = < > Các dấu ngoặc: [ ] { } ( ) 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: _ 1.4.2. Tên Tên là một dãy ký tự : chữ, số và dấu gạch nối được dùng để chỉ tên hằng, tên biến, tên mảng, tên hàm...Tên phải bắt đầu bằng một chữ hoặc dấu gạch nối. Tên không được đặt trùng với từ hoá Ví dụ các tên viết hợp lệ: Giai_Phuong_Trinh_Bac2 abc123 Ví dụ các tên viết không hợp lệ: Baitap 1 123abc Chú ý: -Trong ngôn ngữ lập trình C tên được phân biệt chữ hoa và chữ thường -Thông thường chữ hoa thường được dùng để đặt tên cho các hằng, còn các đại lượng khác thì dùng chữ thường. 1.4.3 Từ khoá - Là những từ có một ý nghĩa hoàn toàn xác định trong chương trình: Ví dụ: void struct class while .... - Không được dùng từ khoá để đặt tên cho các hằng, biến, mảng, hàm .... - Từ khoá phải viết bằng chữ thường Ví dụ từ khoá viết đùng: struct Ví dụ từ khoá viết sai: Struct 1.5. Một số kiểu dữ liệu cơ bản Tất cả các biến phải được khai báo trước và kiểu của chúng phải được mô tả ngay khi khai báo. Có bốn kiểu dữ liệu cơ bản trong C là: char, int, float và double Phạm vi biểu diễn Kích thước Tên ý nghĩa Ký tự char -128 -> 127 1 byte Số nguyên int -32768->32767 2 byte Số thực dấu phẩy động độ chính xác ± 3.4E-38 -> ± 3.4E+38 float 4 byte đơn double Số thực dấu phẩy động độ chính xác ± 1.7E-308 -> ± 1.7E+308 8 byte kép Trang 6
- Ch¬ng tr×nh C vµ C++ Một số float có độ chính xác là 6 chữ số sau dấu chấm thập phân. Còn số double được biểu diễn với độ chính xác tới 15 chữ số sau dấu chấm thập phân Bên cạnh đó chúng ta có thể áp dụng một số các “tiền tố” đi kèm các ki ểu d ữ liệu cơ bản với mục đích thay đổi phạm vi biểu diễn của biến được khai báo. Có các tiền tố như là: short, long, signed (ngầm định đối với char, int), unsigned. Kiểu Phạm vi biểu diễn Kích thước (byte) unsigned char 0 -> 255 1 char -128 -> 127 1 unsigned int 0 -> 65535 2 short int -32768 -> 32767 2 int -32768 -> 32767 2 unsgned long 0 ->4.294967295 4 long -2147483648->-2147483648 4 ± 3.4E-38 -> ± 3.4E+38 float 4 ± 1.7E-308 -> ± 1.7E+308 double 8 long double 3.4E4932->3.4E+4932 10 Lưu ý: - Kiểu long int có thể viết gọn thành long; kiểu unsigned int viết gọn thành usigned Có thể kết hợp nhiều tiền tố với một kiểu dữ liệu cơ sở: chẳng hạn - unsigned long int (viết gọn thành unsigned long) 1.6. Biến Biến là yếu tố cơ bản của bất kỳ ngôn ngữ máy tính nào. Biến là vùng trống trong bộ nhớ máy tính diành cho một kiểu dữ liệu nào đó và có đặt tên. Các biến trong bộ nhớ ở các thời điểm khác nhau có thể cất giữ các giá trị khác nhau. Trước khi sử dụng một biến nào đó phải khai báo nó. Quy tắc khai báo: Kiểu_dữ_liệu Tên_biến ; Có thể khai báo nhiều biến cùng kiểu trên cùng một hàng, các tên biến đ ược phân cách nhau bằng dấu phẩy Ví dụ: /*biến có kiểu nguyên*/ int a,b; /*biến thực*/ float f; /*biến ký tự*/ char ch; 1.7. Hằng số Dữ liệu chứa trong máy tính có thể là biến hoặc hằng biến là đại lượng có thể thay đổi được trong quá trình tính toán hằng là đại lượng có giá trị không thay đổi 1.7.1. Hằng số nguyên Trang 7
- Ch¬ng tr×nh C vµ C++ - Hệ thập phân bình thường VD: 545 - Hệ cơ số 8 (Octal) Bắt đầu bằng số 0 và chỉ biểu diễn số dương Ví dụ: 024=2010 - Hệ cơ số 16 (Hecxa) Bắt đầu bằng 0x Ví dụ: 0xAB = 16310 Chú ý: Nếu là hằng kiểu long thì thêm l(hay L) vào đuôi Ví dụ: 123L 858l Một hằng số nguyên có giá trị vượt ra ngoài phạm vi cho phép đ ược ngầm hiểu là hằng long 1.7.2. 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 Chú ý: Phần nguyên hay phần thập phân có thể vắng mặt nhưng dấu chấm thập phân không được thiếu Ví dụ: 343. .454 - 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 Ví dụ: 1234.54E-122 1.7.3. Hằng ký tự Là một ký hiệu trong bảng mã ASCII được đặt trong hai dấu nháy đơn. Giá trị của hằng kí tự chính là mã ASCII của kí hiệu Ví dụ: Hằng ‘A’ có giá trị là 65 Chú ý: Hằng ký tự biểu thị mã của ký tự đó trong bảng mã ASCII. Do vậy một hằng ký tự cũng có thể tham gia vào các phép toán. Ví dụ: ‘A’+10 có giá trị (65+10=75) Hằng ký tự còn có thể được viết theo cách: ‘\c1c2c3’ trong đó c1c2c3 là một số hệ 8 mà giá trị của nố chính là mã ASCII của ký t ự c ần biểu diễn. Ví dụ: ‘a’ hay ‘\141’ Một số ký tự đặc biệt: Trang 8
- Ch¬ng tr×nh C vµ C++ Viết Ký tự Diễn giải Dấu nháy đơn \’ ‘ Dấu nháy kép \” “ Dấu gạch chéo ngược \\ \ Xuống dòng mới \n \n Ký tự Null \0 \0 Nhảy cách ngang, ký tự tab \t \b Xoá trái Về đầu dòng \r \f Sang trang 1.7.4. Hằng xâu ký tự - Là một dãy các ký tự đặt trong hay dấu nháy “......” - Xâu ký được lưu trữ trong một mảng ô nhớ liền nhau song còn thêm ô nhớ cuối cùng chứa mã là 0(ký hiệu là ‘\0’ ) Ví dụ: “Nguyen Van Anh” Đươc tổ chức trong bộ nhớ như sau: Ng Uyen VaN A n h \0 Chú ý: Chúng ta cần phân biệt “A” và ‘A’. Trong đó “A” được chứa trong 2 byte, còn ‘A’ chỉ mất 1 byte và nó có thể tham gia tính toán trong các biểu thức. * Hằng có thể định nghĩa bằng hai cách: Cách 1: Dùng toán tử #define nhằm định nghĩa một hằng ký hiệu #define Cấu trúc này định nghĩa một hằng ký hiệu có tên bằng xâu kí tự. Khi biên dịch chương trình, chương trình dịch thay thế các lần xuất hiện c ủa bằng xâu ký tự tương ứng Ví dụ: #define MAX 100 Cách 2: const kieu_du_kieu ten_hang = gia_tri_hang; Ví dụ: const int n=20; 1.8. Biểu thức Biểu thức là một sự kết hợp giữa các phép toán và các toán hạng đ ể diễn đ ạt một công thức nào đó. Các toán hạng có thể là một đại lượng nào đó có giá trị như: hằng, biến hay một biểu thức con. Mỗi biểu thức có một giá trị. Tuỳ theo giá tr ị của biểu thức mà có các biểu thức nguyên hay biểu thức thực. Các mệnh đề logic có giá trị nguyên trong đó giá trị khác 0 tương ứng mệnh đề đúng, còn giá trị 0 tương ứng mệnh đề sai. Biểu thức được sử dụng trong: Vế phải của lệnh gán; làm tham số thực của các hàm; làm chỉ số; các câu lệnh if, for, while, do while; các biểu thức lớn hơn 1.9. Các phép toán Trang 9
- Ch¬ng tr×nh C vµ C++ Trong C người ta phân biệt các loại phép toán sau: 1.9.1. Các phép toán số học: Ví dụ Phép toán ý nghĩa Đổi dấu một số thực hoặc nguyên - -12 -a Phép cộng 2 số thực hoặc nguyên + 2+4=6 Phép trừ - 2-3=-1 * Phép nhân 4*2=8 / Phép chia 5/3=1 Phép lấy phần dư % 6/2=0 Chú ý:-- Nếu phép chia hai toán hạng đều nguyên thì phép chia cho kết quả là ph ần nguyên của thương hai toán hạng đó. - Nếu một trong hai toán hạng là kiểu thực thì lúc này kết quả c ủa phép chia cho ta giá trị đúng. - Phép toán lấy phần dư % chỉ áp dụng cho trường hợp hai toán hạng là số nguyên. Mức độ ưu tiên: - (phép trừ một ngôi) * và / + và - (hai ngôi) 1.9.2. Các phép toán quan hệ: Ví dụ Kết quả Phép toán ý nghĩa So sánh lớn hơn > 1>2 0 So sánh lớn hơn hoặc bằng >= 2>=2 1 So sánh nhỏ hơn < 33)||(1>8) 1 Trang 10
- Ch¬ng tr×nh C vµ C++ Phép hoặc (or). Giá trị biểu thức bằng 1 khi một trong hai toán hạng bằng 1 Hai phép toán && và || có số ưu tiên thấp hơn so với các phép toán quan hệ. Tất cả các phép toán này lại có số ưu tiên thấp hơn phép phủ định một ngôi Các phép toán quan hệ và logic được sử dụng để thiết lập điều kiện rẽ nhánh trong lệnh if và điều khiển kết thúc chu trình trong các câu lệnh for while do while. Giá trị của toán hạng khác 0 sẽ được coi là TRUE và ngược lại giá trị bằng 0 sẽ được coi là FALSE Trang 11
- Ch¬ng tr×nh C vµ C++ 1.9.4. Các 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 hoặc biến con trỏ). 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-- 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; Tương đương Kết quả Phép toán i=++j; tăng trước j=j+1; i=j; i=16 và j=16 i=j++; tăng sau i=j; j=j+1; i=15 và j=16 i++; i=i+1; i=4 j = ++i + 5; i=i+1; j=i+5; i=4 và j=9 j = i++ +5; j=i+5; i=i+1; i=4 và j=8 1.9.5. Phép toán lấy địa chỉ biến (&) - Để lấy địa chỉ của một biến ta dùng toán tử & cụ thể như sau: & tên_biến Ví dụ: &x lấy địa chỉ của biến a &n lấy địa chỉ của biến n 1.9.6. Phép toán chuyển đổi kiểu giá trị: Việc chuyển đổi kiểu dữ liểu trong C thường diễn ra tự động trong các trường hợp sau: - Khi toán hạng trong một phép toán có kiểu khác nhau thì kiểu thấp hơn đ ược chuyển thành kiểu cao hơn: int->long->float->double - Khi gán một giá trị kiểu này cho một biến (hoặc phần tử mảng) kiểu kia. Ví dụ: int c; c=2.45;/* c sẽ nhận giá trị là 2*/ - Khi truyền giá trị cho các đối số của hàm, trong câu lệnh return của hàm. Ngoài ra ta có thể chuyển từ một kiểu giá trị này sang một kiểu giá trị khác bất kỳ ta muốn bằng cách ép kiểu theo mẫu sau: (Kiểu_dữ_liệu) biểu_thức Ví dụ: float c=7.4; Trang 12
- Ch¬ng tr×nh C vµ C++ int n; n=(int)c*3;/* khi đó n có giá trị 21*/ 1.9.7. Biểu thức gán Toán tử gán có hai dạng: Biến = Biểu_thức Biến op = Biểu_thức Cách viết dưới tương đương Biến = (biến) op (Biểu_thức) trong đó op là một toán tử nào đó. Giá trị của Biểu_thức sẽ được gán cho biến sau câu lệnh này Ví dụ: tương đương với x = x+y x+=y Nếu ta thêm dấu ; vào sau biểu thức gán sẽ thu được một câu lệnh gán Biểu thức gán có thể được sử dụng trong các phép toán và các câu lệnh như các biểu thức thông thường. Chẳng hạn khi viết: a=b=5; thì điều đó có nghĩa rằng gán giá trị của biểu thức b=5 cho biến a. Kết quả là b=5 và a=5. Tương tự sau câu l ệnh: x = (a=5) * (b=10); sẽ gán 5 cho a, 10 cho b và sau đó gán tiếp 50 cho x 1.9.8. Biểu thức điều kiện Biểu thức điều kiện có dạng: Biểu_thức1 ? Biểu_thức2 : Biểu_thức3 Nếu Biểu_thức1 !=0 thì giá trị của biểu thức điều kiện sẽ là biểu_thức_2, trái lại là giá trị của biểu_thức3. Kiểu của biểu thức điều kiện là kiểu cao nhất trong các kiểu của Biểu_thức2 và biểu_thức3 Biểu thức điều kiện cũng được dùng như các biểu thức khác. Ví dụ dùng câu lệnh sau để xác định giá trị lớn nhất giữa 2 số a và b: s = (a>b) ? a: b; Trang 13
- Ch¬ng tr×nh C vµ C++ CHƯƠNG 2. CÁC CÂU LỆNH ĐIỀU KHIỂN CHƯƠNG TRÌNH 2.1. Câu lệnh đơn Một biểu thức theo sau bằng một dấu ; trở thành một câu lệnh đơn. Ví dụ: là các câu lệnh hợp lệ x = 0; i++; printf(); 2.2. Câu lệnh ghép Là tập hợp các câu lệnh được bao bởi hai dấu { và }. Về cú pháp, bất cứ ở đâu có thể đặt được câu lệnh đơn đều có thể đặt khối lệnh ở đó. Không đ ặt dấu ; sau một khối lệnh 2.3. Vào/ra 2.3.1. Hàm printf Hàm printf có khả năng chuyển dạng, tạo khuôn dạng và đưa giá trị các đối ra màn hình. Dạng tổng quát của hàm: int printf(dong_dieu_khien[,danh_sach_cac_doi]); - Dòng điều kiển: Là một hằng xâu ký tự được đặt trong hai dấu “......”. Trong xâu có hai loại đối tượng sau: Các ký tự thông thường sẽ được in ra nguyên si trên màn hình. Các ký tự đặc biệt và các đặc tả. * Các ký tự đặc biệt Ký tự Dãy mã Dấu ‘ \’ Dấu “ \” Dấu \ \\ Xuống dòng mới \n Ký tự Null \0 Nhảy cách ngang \t \b Xoá trái Về đầu dòng \r \f Sang trang * Các đặc tả có dạng %[-][fw][.op]ký_tự chuyển_dạng Trong đó: Dấu “-“ dùng để căn dữ liệu của trường ra theo lề trái. fw là một số nguyên xác định độ rộng tối thiểu dành cho trường ra Trang 14
- Ch¬ng tr×nh C vµ C++ op là một số nguyên xác định số chữ số thập phân(đối với float, double) hoặc độ dài của xâu ký tụ. Ví dụ: printf(“\n%d”,1234); printf(“\n%8d”,1234); printf(“\n%-8d”1234); printf(“\n%.2f”,12.3456); printf(“\n%.2s”,”abcd”); Kết quả: :1234: : 1234: :1234 : :12.34: :ab: - Các ký tự chuyển dạng Dãy mã qui cách ý nghĩa in ra kí tự kiểu char, có thể dùng cho kiểu short và int %c in ra số nguyên int, có thể dùng cho kiểu char %d in ra kiểu số nguyên không dấu, unsigned int, có thể dùng cho unsigned %u char, unsigned short in ra kí tự kiểu long %ld in ra kí tự kiểu unsigned long %lu in ra kiểu số nguyên viết dưới dạng số hexa %x,%X in ra kiểu số nguyên viết dưới dạng số octal(hệ đếm 8) %o in ra kiểu số thực dưới dạng bình thường với phần phân có 6 chữ số, %f dùng cho kiểu float, double in ra xâu kí tự. Ta phải cung cấp địa chỉ của xâu kí tự %s - Danh sách các đối: Mỗi đối là một biến, biểu thức, phần t ử mảng, l ời g ọi hàm....Giữa các đối cách nhau bởi dấu phẩy. Chú ý: Tương ứng với mỗi đối phải có một đặc tả tương ứng 2.3.2. Hàm scanf Hàm scanf dùng để nhập dữ liệu từ bàn phím và lưu vào bộ nhớ theo địa chỉ xác định. Dạng tổng quát của hàm: int scanf(dong_dieu_khien, danh_sach_cac_doi); - Dòng điều khiển: Là một xâu ký tự đặt trong dấu “........” chỉ bao gồm các đặc tả có dạng sau: Trang 15
- Ch¬ng tr×nh C vµ C++ %ky_tu_chuyen_dang Nếu trong hàm scanf dong_dieu_khien có nhiều đặc tả thì các đặc tả viết liền vào nhau không có dấu phẩy ngăn cách giữa các đặc tả. - Danh sách các đối: Là địa chỉ của các biến hay địa chỉ của các phần tử c ủa mảng. Nếu danh sách đối có nhiều hơn một thì giữa các đối đặt cách nhau một dấu phẩy. Tương ứng với đặc tả nào thì đối đó và mỗi đối thì phải có một đặc tả tương ứng. 2.3.3.Ví dụ minh hoạ: Lập chương trình tính tổng của ba số được nhập vào từ bàn phím. #include “stdio.h” #include “conio.h” void main() { int a,b,c; clrscr(); printf(“Ban hay nhap vao ba so a,b,c=”); scanf(“%d%d%d”,&a,&b,&c); printf(“Tong cua ba so la =%d”,a+b+c); getch(); } 2.4. Các câu lệnh điều khiển chương trình 2.4. 1. Câu lệnh if – else Cú pháp: if (biểu_thức) công_việc1; else công_việc2; trong đó else là phần tuỳ chọn. Biểu thức được tính, nếu nó đúng (có giá tr ị khác không) thì công_việc1 được thực hiện. Trái lại và nếu có phần else thì công_việc 2 sẽ được thực hiện (trong trường hợp không có phần else thì chương trình đi qua câu lệnh mà không làm gì cả) Vì if chỉ kiểm tra giá trị số của biểu thức nên có thể viết gọn hơn nữa. Hay dùng cách viết: if (biểu_thức) thay cho if (biểu_thức !=0) Chú ý: else được gắn với if không có else ở gần nhất trước đó. Trang 16
- Ch¬ng tr×nh C vµ C++ Ví dụ áp dụng: Lập chương trình giải phương trình bậc hai ax2+bx+c=0 #include “stdio.h” #include “conio.h” void main() { float a,b,c,delta; clrscr(); printf(“Ban hay nhap vao ba so a,b,c=”);scanf(“%f%f%f”,&a,&b,&c); if (a=0) printf(“Day khong phai la phuong trinhbac hai”); else { delta=b*b-4*a*c; if (delta
- Ch¬ng tr×nh C vµ C++ Trong đó: *switch, case, default là các từ khoá * bieu_thuc: là một biểu thúc nguyên bất kỳ * ei:là giá trị nguyên mà biểu thức có thể nhận được. Có thể là kiểu char vì nó có thể được chuyển đổi thành kiểu int * Những phần đặt trong hai dấu [ và ] có thể có hoặc không b./ Sự hoạt động của cấu trúc điều khiển switch phụ thuộc vào giá trị của bieu_thuc * Khi giá trị này bằng ei máy sẽ nhảy tới khối lệnh có nhãn case ei và thực hiện từ Khối_lệnh_i trở đi cho tới khi gặp câu lệnh break hoặc câu lệnh goto, return hay dấu } kết thúc switch. Khi đó máy sẽ thoát ra khỏi cấu trúc lệnh và thực hiện các câu lệnh tiếp theo sau cấu trúc lệnh. * Khi giá trị của bieu_thuc khác tất cả các giá trị ei thì cách làm việc của máy lại phụ thuộc vào sự có mặt hay không có mặt của default. Khi có default máy nhảy tới câu lệnh có nhãn default. Khi không có default máy tiến hành thực hiện các câu lệnh sau cấu trúc này. c./ Ví dụ áp dụng: Lập chương trình nhập vào từ bàn phím một số nguyên (1 – 5). Sau đó hiện ra màn hình nghĩa tiếng anh của số tương ứng #include “stdio.h” #include “conio.h” void main() { int i; clrscr(); printf(“Ban hay nhap vao mot gia tri nguyen:”);scanf(“%d”,&i); switch(i) { case 1:printf(“one”);break; case 2:printf(“two”);break; case 3:printf(“three”);break; case 4:printf(“four”);break; case 5:printf(“five”);break; default: printf(“May khong biet”); } getch(); } 2.4.3. Cấu trúc lặp while a./ Cú pháp câu lệnh Trang 18
- Ch¬ng tr×nh C vµ C++ while (bt) Công_việc; Trong đó: - while là từ khoá - bt là một biểu thức - Công_việc có thể là một lệnh đơn hay một khối lệnh c./ Sự hoạt động của câu lệnh while được tiến hành lần lượt được tiến hành theo các bước sau: Bước 1: Tiến hành tính toán giá trị của bt. Bước 2: Nếu biểu thức có giá trị bằng không máy thoát khỏi chu trình và tiến hành thực hiện các câu lệnh sau câu lệnh while. Nếu biểu thức có giá trị khác không máy tiến hành thực hiện Công_việc và quay về bước 1. d./ Ví dụ áp dụng Ví dụ1: Lập chương trình tính tổng sau: s= a-a2+a3-....+(-1)n+1an #include”stdio.h” #include “conio.h” void main() { int n,i,dau; float s,tg,a; clrscr(); printf(“Ban hay cho gia tri n=”);scanf(“%d”,&n); printf(“Ban hay cho gia tri cua a=”);scantf(“%f”,&a); s=0;i=1;dau=-1;tg=1; while (i++
- Ch¬ng tr×nh C vµ C++ Chú ý: bt có thể là một dãy các biểu thức đặt cách nhau bởi dấu phẩy. Tính đúng sai của bt được hiểu là tính đúng sai của biểu thức cuối cùng trong dãy. Ví dụ 2: Lập chương trình tính tổng sau: s:= a-a2+a3-....+(-1)n+1an #include “stdio.h” #include “conio.h” void main() { int dau,i,n; float a,s,tg; clrscr(); printf(“Ban hay cho gia tri n=”);scanf(“%d”,&n); printf(“Ban hay cho gia tri cua a=”);scantf(“%f”,&a); s=0;i=1;dau=-1;tg=1; while (tg*=a,dau*=-1,++i
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Cấu trúc của một chương trình C++
65 p | 1138 | 196
-
ngôn ngữ lập trình c và c++ (bài giảng, bài tập, lời giải mẫu)
287 p | 275 | 68
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 1: Ngôn ngữ lập trình C) - Chương 1: Ôn tập một số nội dung chính của NNLT C
31 p | 157 | 13
-
Bài giảng Hệ điều hành Linux - Chương 4: Lập trình trên Linux
35 p | 124 | 11
-
Bài giảng Nhập môn lập trình: Bài 1 - Tổng quan máy tính và phần mềm máy tính
42 p | 123 | 9
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ C++) - Chương 2: Giới thiệu về ngôn ngữ lập trình C++
49 p | 137 | 7
-
Bài giảng Nhập môn Lập trình: Chương 1
42 p | 45 | 7
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ lập trình C++) - Chương 5: Các lớp nhập/xuất trong C++
19 p | 132 | 7
-
Bài giảng Ngôn ngữ lập trình C và C++: Bài 3 - TS. Đỗ Đăng Khoa
41 p | 79 | 6
-
Bài giảng Ngôn ngữ lập trình C và C++: Bài 4 - TS. Đỗ Đăng Khoa
40 p | 95 | 5
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ lập trình C++) - Chương 3: Lớp và đối tượng
52 p | 112 | 5
-
Bài giảng Lập trình hướng đối tượng (Object-Oriented Programming): Phần 1 - GV. Ngô Công Thắng
62 p | 11 | 5
-
Bài giảng Ngôn ngữ lập trình C và C++: Bài 6 - TS. Đỗ Đăng Khoa
63 p | 46 | 4
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ lập trình C++) - Chương 6: Mẫu (template)
27 p | 85 | 4
-
Bài giảng ngôn ngữ C#: Bài 2 - Chử Đức Hoàng
37 p | 21 | 3
-
Bài giảng Lập trình nâng cao (Advanced Programming) - Chương 1: Cấu trúc chung của chương trình C
8 p | 8 | 3
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p | 10 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn