Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 75 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
75
Dung lượng
582,5 KB
Nội dung
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 <stdio.h> 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:ố ọ 9 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 3.1.3. Truy nh p v o các ph n t c a m ngậ à ầ ử ủ ả 26 3.1.4. Xâu kí tự 28 Trang 1 Ch¬ng tr×nh C vµ C++ 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:ắ ạ độ ủ à 40 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ƯƠ ĐỐ ƯỢ Ớ 63 3.1. i t ngĐố ượ 63 3.2. L pớ 64 3.2.1. Khai báo l pớ 64 3.2.2. T o i t ngạ đố ượ 65 3.2.3. Các th nh ph n d li u:à ầ ữ ệ 66 3.2.4. H m th nh ph n (ph ng th c) à à ầ ươ ứ 66 3.2.5. T khoá private v public ừ à 66 3.3.H m thi t l p(constructor)à ế ậ 67 3.4 H m hu b (desreuctor)à ỷ ỏ 69 Trang 2 Ch¬ng tr×nh C vµ C++ 3.5 H m thi t l p sao chép(copy constructor)à ế ậ 70 3.6 H m b n, l p b nà ạ ớ ạ 73 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*/ #include <stdio.h> #include <conio.h> main() { clrscr();/* Câu lệnh xoá màn hình*/ printf(“Turbo C ”); Trang 3 Ch¬ng tr×nh C vµ 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: Cách 1: #include <[đường dẫn\] tentep> Ví dụ: #include <a:\Baitap\Bai1.C> #include <stdio.h> Cách 2: #include “[đường dẫn\]tentep” Ví dụ: #include “a:\Baitap\Bai2.C” Trang 4 Ch¬ng tr×nh C vµ 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 <stdio.h> #include <conio.h> 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 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: _ Trang 5 Ch¬ng tr×nh C vµ C++ 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 Tên ý nghĩa Phạm vi biểu diễn Kích thước char Ký tự -128 -> 127 1 byte int Số nguyên -32768->32767 2 byte float Số thực dấu phẩy động độ chính xác đơn ±3.4E-38 -> ±3.4E+38 4 byte double Số thực dấu phẩy động độ chính xác kép ±1.7E-308 -> ±1.7E+308 8 byte 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 Trang 6 Ch¬ng tr×nh C vµ C++ 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 float ±3.4E-38 -> ±3.4E+38 4 double ±1.7E-308 -> ±1.7E+308 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ụ: int a,b; /*biến có kiểu nguyên*/ float f; /*biến thực*/ char ch; /*biến ký tự*/ 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 - 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=20 10 - Hệ cơ số 16 (Hecxa) Bắt đầu bằng 0x Trang 7 Ch¬ng tr×nh C vµ C++ Ví dụ: 0xAB = 163 10 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: 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 \n \n Xuống dòng mới \0 \0 Ký tự Null \t Nhảy cách ngang, ký tự tab Trang 8 Ch¬ng tr×nh C vµ C++ \b Xoá trái \r Về đầu dòng \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: N g U y e n V a N 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 <Tenhang> <Xaukytu> Cấu trúc này định nghĩa một hằng ký hiệu có tên <Tenhang> 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 <Tenhang> 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 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: Phép toán ý nghĩa Ví dụ - Đổ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 Trang 9 Ch¬ng tr×nh C vµ C++ * 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ệ: Phép toán ý nghĩa Ví dụ Kết quả > 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 3<3 0 <= So sánh nhỏ hơn hoặc bằng 4<2 0 == So sánh bằng nhau 4==5 0 != So sánh không bằng nhau 2!=7 1 Mức độ ưu tiên: >, >=, <, <= ==, != 1.9.3. Các phép toán logic Các phép toán logic được thể hiện dưới bảng sau: Phép toán logic ý nghĩa Ví dụ Kết quả ! Phép phủ định một ngôi (not) !(3>1) 0 && Liên kết hai biểu thức logic Phép và (and). Giá trị bằng 1 khi cả 2 toán hạng có giá trị 1 (2>1)&&(5=2) 0 || Liên kết hai biểu thức logic. 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 (4>3)||(1>8) 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á Trang 10 [...]... 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... c c hàm chuẩn, đư c khai báo trong tệp tiêu đề c tên là string.h Để sử dụng c c hàm thao t c trên xâu, ở đầu chương trình c n phải c dòng khai báo #include Một số hàm thông dụng #include int strlen(char s[]) strcpy( char dest[], char source[]) strncpy(char dest[], char source[], int n) strcat(char ch1[], char ch[2]) strncat(char ch1[], char ch[2],int n) int strcmp(char ch[1], char... c u tr c trong C có nhiều nét tương tự như khái niệm về bản ghi (record) trong Pascal hay Foxpro 4.1.2 Khai báo c u tr c - C pháp: struct [ten_cau_truc] { Khao báo c c thành phần; } [danh sách c c biến c u tr c] ; - trong đó: struct là từ khoá đứng trư c khai báo c u tr c; tên _c u_tr c là một tên hợp lệ đư c dùng làm tên c u tr c, tên này c thể c ho c không; danh sách c c biến c u tr c: liệt kê c c. .. c c biến c kiểu c u tr c vừa khai báo, c c biến này sẽ sử dụng trong chương trình, danh sách này c thể c ho c không, nhưng ít nhất một trong hai ho c là tên _c u_tr c ho c danh sách c c biến c u tr c phải c mặt trong khai báo Ví dụ: struct hoc_sinh { char ho_ten[30]; float diem; Trang 34 Ch¬ng tr×nh C vµ C+ + } hs, dshs[100]; C u lệnh này c thể t c thành hai c u lệnh như sau: struct h c_ sinh { char... t-h c_ sinh, *ptr_hoc_sinh; với c u lệnh này tên mới c a c u tr c struct hoc_sinh sẽ là t_hoc_sinh và một kiểu con trỏ c u tr c có tên là ptr_hoc_sinh Khi đó c u lệnh khai báo biến đư c viết: Trang 35 Ch¬ng tr×nh C vµ C+ + t-hoc_sinh hs,dshs[100]; Để khai báo một biến con trỏ c u tr c ta c thể sử dụng c u lệnh sau: ptr_hoc_sinh ptrhs; 4.1.4 Truy nhập đến c c thành phần c a c u tr c C c thành phần c a c u... địa chỉ c a nhà bên c nh bằng c ch c ng thêm 1 ho c trừ đi 1 vào địa chỉ c a c n nhà đã biết, và c thế tiếp t c Điều đó c nghĩa khi c ng ho c trừ con trỏ với một số nguyrn n,, ta Trang 31 Ch¬ng tr×nh C vµ C+ + sẽ đư c một địa chỉ mới chỉ đến một biến kh c nằm c ch biến trư c (ho c sau) đó n vị trí - Do phép c ng một con trỏ với một số nguyên cho ta một con trỏ, nên phép trừ hai con trỏ đư c coi là... nguyên đư c cấp phát hai byte, một biến th c đư c cấp phát bốn byte Địa chỉ c a biến đư c tính là số thứ ttự c a byte đầu tiên trong dãy c c bytes đư c cấp cho biến Vì vậy người ta phân biệt c c con trỏ theo kiểu địa chỉ chứa trong c c con trỏ 3.2.3 Sử dụng c c con trỏ - Toán tử một ngôi & cho ta địa chỉ c a một đối tượng, như vậy c u lệnh: p= &c; gán địa chỉ c a biến kí tự c cho con trỏ p, và ta nói... 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:... Trang 28 Ch¬ng tr×nh C vµ C+ + int stricmp(char ch[1], char ch2[]) Tương tự như hàm strcmp(), nhưng không phân biệt chữ hoa và chữ thường int strincmp(char ch[1], char ch2[], int n) Tương tự như hàm stricmp(), nhưng chỉ giới hạn vi c so sánh với n kí tự đầu tiên c a hai xâu char *strchr(char s[], char c) Tìm lần xuất hiện đầu tiên c a kí tự c trong xâu s, trả về địa chỉ c a kí tự này char * strrchar(char... đư c tiến hành lần lượt theo c c bư c sau: Bư c 1: Th c hiện C ng_vi c Bư c 2: Sau khi th c hiện xong C ng_vi c máy tiến hành tính toán giá trị c a bt Nếu bt c giá trị kh c không máy sẽ trở lại bư c 1 để tiếp t c th c hiện vòng lặp mới c a chu trình Nếu bt c giá trị bằng không máy sẽ ra khỏi chu trình và chuyển tới c u lệnh đứng sau c u tr c do while c. / Ví dụ áp dụng Trang 20 Ch¬ng tr×nh C vµ C+ + . 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. 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. 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