1. Trang chủ
  2. » Giáo Dục - Đào Tạo

NGÔN NGỮ LẬP TRÌNH C MỘT SỐ GIẢI THUẬT THÔNG DỤNG VÀ CẤU TRÚC MẢNG, CÁC CẤU TRÚC ĐIỀU KHIỂN

71 3 0

Đ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

MỤC LỤC Chương GIỚI THIỆU NGƠN NGỮ LẬP TRÌNH C 1.1 GIỚI THIỆU: 1.2 SỬ DỤNG: .6 1.2.1 Khởi Động Chuyển vào thư mục có chứa Turbo C gõ lệnh: 1.2.2 Các Lệnh xử lý tập tin: 1.2.3 Thao tác dịch chuyển trỏ: 1.2.4 Thao tác chèn xóa: 1.2.5 Thao tác xử lý khối văn bản: 1.2.6 Thao tác tìm kiếm thay thế: 1.2.7 Thao tác biên dịch chạy chương trình: .8 1.3 BỘ KÝ TỰ, TỪ KHĨA, DỊNG CHÚ THÍCH: 1.3.1 Bộ ký tự bản: .9 1.3.2 Các từ khóa: 1.3.3 Dịng thích: 1.4 HẰNG, BIẾN, CÁC KIỂU VÔ HƯỚNG CHUẨN: 1.4.1 Hằng(constant): 1.4.2 Biến (variable): 10 1.4.3 Các kiểu vô hướng chuẩn: .10 1.5 CẤU TRÚC CHƯƠNG TRÌNH: 11 1.6 XỬ LÝ BIẾN 12 1.6.1 Khởi tạo giá trị biến: .12 1.6.2 Xuất giá trị biến: .12 1.6.3 Nhập liệu vào cho biến: 14 1.6.4 Biến đổi kiểu: 14 1.6.4.1 Biến đổi kiểu tự động: .14 1.6.4.2 Biến đổi kiểu bắt buộc: 15 1.7 CÁC TOÁN TỬ, BIỂU THỨC: 16 1.7.1 Các toán tử: 16 1.7.1.1 Các toán tử số học: 16 1.7.1.2 Các toán tử quan hệ logic: 16 1.7.1.3 Các toán tử thao tác Bit: 17 1.7.2 Biểu thức: 19 1.8 BÀI TẬP CHƯƠNG I 20 Chương 21 CÁC CẤU TRÚC ĐIỀU KHIỂN 21 2.1 CẤU TRÚC TUẦN TỰ: .21 2.2 CẤU TRÚC ĐIỀU KIỆN: 21 2.3 CẤU TRÚC PHÂN NHÁNH: 22 2.4 CẤU TRÚC LẶP: 24 2.4.1 Vòng lặp while: 24 2.4.2 Vòng lặp for: 25 2.4.3 Vòng lặp - while: .26 2.4.4 Câu lệnh break countinue .27 2.4.4.1 Lệnh break: Dùng để thoát khỏi cấu trúc lặp cấu trúc phân nhánh 27 2.4.4.2 Lệnh countinue: Dùng để quay trở lại kiểm tra cấu trúc lặp 29 2.4.4.3 Lệnh #Define: để gán giá trị cho hằng, trình biên dịch thay tên giá trị gán cho lần gặp 29 2.5 BÀI TẬP CHƯƠNG 30 Chương 31 HÀM CÁC NGUYÊN LÝ LẬP TRÌNH 31 3.1 KHÁI NIỆM VỀ HÀM- FUNCTION: 31 3.2 CÁCH KHAI BÁO HÀM TRONG TURBO C: 31 3.3 TRỊ TRẢ VỀ CỦA HÀM: 33 3.4 PROTOTYPE CỦA MỘT HÀM: 33 3.5 LỚP CỦA BIẾN: 35 3.5.1 Biến automatic: 35 3.5.2 Biến extern & static: .35 3.5.3 Biến ghi register: 36 3.6 NGUYÊN LÝ TỐI THIỂU: 39 3.6.1 Tập phép toán: 39 3.6.2 Tập lệnh vào bản: 39 3.6.3 Thao tác kiểu liệu có cấu trúc: 39 3.7 NGUYÊN LÝ CỤC BỘ: .40 3.8 NGUYÊN LÝ NHẤT QUÁN: 41 3.9 NGUYÊN LÝ AN TOÀN: 44 3.10 BÀI TẬP CHƯƠNG 3: 48 Chương 49 MỘT SỐ GIẢI THUẬT THÔNG DỤNG 49 VÀ CẤU TRÚC MẢNG 49 4.1 GIẢI THUẬT: 49 4.2.1 Các bước lập trình: 49 4.1.2 Giải thuật: 49 4.1.2.1 Định nghĩa: 49 4.1.2.2 Tính chất giải thuật: .49 4.1.3 Mô tả giải thuật: .49 4.1.3.1 Ngôn ngữ giải thuật: .49 4.1.3.2 Lưu đồ giải thuật: 50 4.2 KHÁI NIỆM VÀ CÁCH KHAI BÁO MẢNG: 52 4.2.1 Khái niệm: 52 4.2.2 Mảng chiều: .52 4.2.2.1 Khai báo tường minh kích thước mảng : 52 4.2.2.2 Khai báo khơng tường minh kích thước mảng: 53 4.2.3 Mảng hai chiều: 54 4.2.3.1 Khai báo tường minh kích thước mảng: .54 4.2.3.2 Khai báo không tường minh kích thước mảng: 55 4.3 ĐỊA CHỈ MẢNG VÀ MẢNG LÀ ĐỐI CỦA HÀM: 59 4.3.1 Địa phần tử mảng: 59 4.3.2 Truyền tham số cho hàm biến mảng: .60 4.4 SẮP XẾP MẢNG: 61 4.4.1 Phương pháp Bubble sort: (phương pháp tuần tự) 61 4.4.2 Phương pháp Quicksort: .63 4.5 CÁC VÍ DỤ VỀ GIẢI THUẬT THƠNG DỤNG .64 4.5.1 Giải thuật dịch chuyển: 64 4.5.2 Giải thuật tìm trị lớn (Max) nhỏ (Min): .67 4.6 BÀI TẬP CHƯƠNG 4: 72 Chương GIỚI THIỆU NGƠN NGỮ LẬP TRÌNH C Mục đích yêu cầu Giới thiệu khái quát đặc điểm Turbo C (ngôn ngữ C ) Bộ ký tự, từ khóa, dịng thích, hằng, biến, kiểu vơ hướng chuẩn, toán tử biểu thức , cuối chương giới thiệu số chương trình đơn giản làm ví dụ Nội dung: tiết Lý thuyết + tiết Thực hành 1.1 GIỚI THIỆU: Ngôn ngữ C Denis Richie Bell Laboratories thuộc hãng AT&T xây dựng năm 1972 Vào thời gian điều kiện học bắt đầu lên khái niệm hộp đen chế mà theo cần quan tâm đến đầu vào đầu Trong bối cảnh C triển khai nhiều xử lý khác nhau, kết có thư viện khổng lồ hàm mà không ngôn ngữ sánh kip Khi sử dụng hàm chuẩn C bạn cần biết phải truyền tham số (đầu vào) nhận (đầu ra) Vì cơng việc lập trình trở nên dễ dàng, nhanh, gọn Do tính dễ cài đặt khơng phụ thuộc qúa nhiều vào hệ điều hành Ngày C trở thành ngơn ngữ lập trình vạn nhiều người biết đến sử dụng để cài đặt hệ thống tạo sản phẩm cao cấp DBASE, FOXBASE Chương trình viết C chạy nhanh gần ASSEMBLER Ngôn ngữ C++ Bell Laboratories xây dựng sở ngôn ngữ C ngơn ngữ lập trình hướng đối tượng, ngôn ngữ đủ mạnh để giải hầu tưởng lập trình mà cịn gọn nhẹ, khơng địi hỏi cấu hình cao, dễ sử dụng 1.2 SỬ DỤNG: 1.2.1 Khởi Động Chuyển vào thư mục có chứa Turbo C gõ lệnh: TC Hoặc tìm biểu tượng chương trình Turbo C hình Windows để kích hoạt Lúc hình xuất cửa sổ làm việc TC sau: Thanh Menu Thanh Trạng Thái Vùng Soạn thảo chương trình Cửa sổ thơng báo lỗi Thanh chức - Dịng Thanh Menu gồm mục: File Edit Run Compile Project Options Debug Break/Watch - Ở phần thân gồm: Thanh Trạng thái, Cửa sổ Soạn thảo Cửa sổ Message (Cửa sổ chứa thông báo lỗi thực biên dịch thơng dịch) - Dịng cuối dịng ghi lệnh thơng dụng: F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu 1.2.2 Các Lệnh xử lý tập tin: Mặc nhiên phần mở rộng tên tập tin chương trình C Các lệnh chứa Menu File (Alt - F) gồm: Load (F3): Mở tập tin từ đĩa tập tin Pick (Alt + F3): Chọn lại tập tin mở trước New: Tạo tập tin với tên Noname.C thư mục hành Save (F2): Ghi tập tin lên đĩa Write to: Ghi tập tin lên đĩa với tên khác Directory: Chọn tập tin liệt kê theo đường dẫn thư mục Change Dir: Chọn thư mục hành khác Os Shell: Tạm dừng Turbo C trở hình Dos (muốn trở lại chương trình soạn thảo Turbo C gõ lệnh Exit) Quit(Alt - X): Kết thúc làm việc với Turbo C trở Dos 1.2.3 Thao tác dịch chuyển trỏ: - ,,,: di chuyển trỏ theo hướng mũi tên - Home, End: Chuyển trỏ đầu cuối dòng - Ctrl - Home, Ctrl - End: Chuyển trỏ đầu cuối trang hình - PageUp, PageDown: Chuyển trỏ lên xuống trang hình - Ctrl - PageUp, Ctrl - PageDown: di chuyển trỏ đầu cuối văn 1.2.4 Thao tác chèn xóa: - Insert : Chuyển đổi chế độ soạn thảo viết chèn viết đè - Ctrl - N: chèn dòng trắng vị trí trỏ - Ctrl - Y: xóa dịng vị trí trỏ - Ctrl - Q Y: xóa từ vị trí trỏ đến cuối dịng 1.2.5 Thao tác xử lý khối văn bản: - Ctrl -K B: Đánh dấu đầu khối vị trí trỏ - Ctrl - K K: Đánh dấu cuối khối vị trí trỏ - Ctrl - K C: Sao chép khối liệu đến vị trí trỏ - Ctrl - K V: Chuyển khối liệu đến vị trí trỏ - Ctrl - K Y: Xóa khối liệu đánh dấu - Ctrl - K H: Hiện/ẩn khối - Ctrl - K P: In khối văn máy in 1.2.6 Thao tác tìm kiếm thay thế: - Tìm kiếm: Ctrl - Q F - Tìm kiếm thay thế: Ctrl - Q A (Nhập văn cần tìm văn cần thay có) 1.2.7 Thao tác biên dịch chạy chương trình: Muốn thi hành chương trình soạn thảo chọn mục Run từ Menu (hoặc gõ Ctrl - F9) Chương trình biên dịch liên kết để tạo tập tin tên có phần mở rộng OBJ EXE Muốn xem kết thực chương trình in hình MSDOS gõ Alt+F5 (để trở hình soạn thảo Turbo C gõ Enter) Sau dịch chương trình chạy trực tiếp từ dấu nhắc hệ điều hành Dos 1.3 BỘ KÝ TỰ, TỪ KHĨA, DỊNG CHÚ THÍCH: 1.3.1 Bộ ký tự bản: Trong Turbo C sử dụng ký tự sau: - Các ký tự chữ từ A  Z , a  z - Các ký tự số từ  - Các ký tự đặc biệt: ( ) , [ ] , { } , dấu phẩy, dấu chấm phẩy  Chú ý : Trong Turbo C chữ viết hoa chữ viết thường khác 1.3.2 Các từ khóa: Dùng để định nghĩa thao tác khai báo hằng, biến định nghĩa kiểu liệu v.v Ví dụ 1.1: break , case , char , const , , double, else , if  Chú ý : Các từ khóa phải viết chữ thường 1.3.3 Dịng thích: Do lệnh C ngắn gọn phức tạp nên cần có dịng thích phần nhằm mục đích giúp người viết chương trình người đọc dễ hiểu cấu trúc chương trình Khi thực chương trình, Turbo C bỏ qua khơng biên dịch dịng thích Khi đặt dịng thích chương trình dịng phải đặt cặp ký hiệu: /* */ 1.4 HẰNG, BIẾN, CÁC KIỂU VÔ HƯỚNG CHUẨN: 1.4.1 Hằng(constant): Hằng đại lượng định nghĩa trước giá trị khơng thay đổi suốt thời gian thực chương trình Thường có loại sau: - Hằng số nguyên: Ví dụ 1.2: 100 ; ; 2000  Các Hằng số nguyên thuộc kiểu int , short long - Hằng số thực: Ví dụ 1.3: 3.1419 ; 2.5  Các Hằng số thực thuộc kiểu float, double - Hằng kí tự: nhận kí tự mã ASCII Hằng kí tự phải đặt ‘cặp dấu nháy đơn’ Ví dụ 4: ‘A’ ; ’a’ ; ‘b’  Khi khai báo kí tự, ví dụ ‘A’ máy dành byte để lưu trữ giá trị 'A' 65 - Hằng chuỗi kí tự : chuỗi kí tự nhận ký tự bảng mã ASCII, đặt “cặp dấu nháy kép” Ví dụ 1.5 : “Hello” ; "A"  Khi khai báo chuỗi n kí tự có n+1 kí tự nằm liên tiếp nhớ , n kí tự gán chuỗi kí tự , cịn kí tự sau kí tự Null mã ASCII kí hiệu ‘/0’ (số khơng) 1.4.2 Biến (variable): Biến đại lượng khai báo trước giá trị thay đổi trình thực chương trình Mỗi biến phải đặt tên phải thuộc kiểu liệu Tùy theo kiểu liệu khai báo cho biến mà Turbo C cấp phát vùng nhớ tương ứng với kiểu liệu Tên biến đặt dài kí tự có 32 kí tự đầu có ý nghĩa Tên biến đặt bắt đầu ký tự chữ ký tự gạch dưới, theo sau ký tự chữ, số ký tự khác 1.4.3 Các kiểu vô hướng chuẩn:  Chú ý: - Kiểu char: dùng để lưu trữ giá trị nguyên mà mã ASCII kí tự lớp kí tự thực - Hai cách khai báo: c= ‘a’ c= 97 nhau, sử dụng kiểu xuất liệu dạng ký tự (%c) in kí tự 'a', sử dụng kí hiệu xuất liệu dạng số (%d) in số thứ tự ký tự 'a' Bảng mã ASCII 97 10 Tập hợp DƯƠNG THỰC SỐ SỐ NGUYÊN SỐ NGUYÊN số Kiểu Kích Cận thước Cận char byte -128 127 int bytes -32768 32767 short bytes -32768 32767 long bytes -2147483648 2147483647 unsigned char byte 255 unsigned short bytes 65535 unsigned int bytes 65535 unsigned long bytes 4294967295 float bytes -3.4*1038 3.4*1038 double bytes -1.7*10-308 1.7*10308 long double 10 bytes -3.4*104932 1.1*104932 1.5 CẤU TRÚC CHƯƠNG TRÌNH: Gồm phần: - PHẦN KHAI BÁO CHƯƠNG TRÌNH CHÍNH + Khai báo thư viện hàm khoá #include + Khai báo khoá #define + Khai báo PROTOTYPE chương trình + Khai báo kiểu liệu dùng chung (sử dụng với kiểu có cấu trúc) + Khai báo biến dùng chung: gồm phần ,, , ; + Khai báo chương trình (Có thể đặt chỗ chương trình chính) - PHẦN THÂN CHƯƠNG TRÌNH CHÍNH Bắt đầu từ khố main() { Khai báo biến riêng phần thân chương trình < Các lệnh chương trình > 11 A[2][0]=7 B[2][0]=16 A[2][1]=8 B[2][1]=17 A[2][2]=9 B[2][2]=18 Ma tran A: Ma tran B: 12 10 11 12 45 13 14 15 78 16 17 18 Ma tran Tong C=A+B: Ma tran Tich D=A*B: 11 13 15 84 90 96 17 19 21 201 216 231 23 25 27 318 342 366  Chú ý : C không hỗ trợ khuôn dạng nhập liệu %f cho mảng nhiều chiều Do vậy, muốn nhập liệu số thực cho mảng nhiều chiều phải nhập vào biến trung gian sau gán giá trị trở lại  Trường hợp khai báo mảng biến chung Ví dụ 4.9: Tạo lập ma trận cấp m  n tìm phần tử lớn ma trận #include #define D 20 #define C 20 float A[D] [C] void main(void) { float max, tam; int i, j, d, c, m, n; clrscr(); printf(“\n Nhập số dòng ma trận”); scanf(“%d”, &m); printf(“\n Nhập số cột ma trận:”); scanf(“%d”, &n); for(i = 0; i < m; i++) for(j = 0; j < n; j++) { printf(“\n Nhập A[%d][%d] = ”, i, j); scanf(“%f”, &tam); A[i][j] = tam; 58 } max = A[0][0]; d = 0; c = 0; for(i = 0; i < m; i++) for(j = 0; j < n; j++) if(A[i][j] > max) { max = A[i][j]; d = i; c = j; } printf(“\ Phần tử có giá trị max A[%d][%d] = %6.2f”, d, c, max); getch(); } 4.3 ĐỊA CHỈ MẢNG VÀ MẢNG LÀ ĐỐI CỦA HÀM: 4.3.1 Địa phần tử mảng: Trong turbo C: &: cho địa biến var Ví dụ 4.10: Xem gía trị địa biến đơn #include main( ) { int x ; printf (“\n Nhap gia tri x:”); scanf(“%d”, &x); printf(“ Bien x co gia tri =%d nam o dia chi %p”, x, &x); getch( ); } Kết quả: Nhap gia tri x:10 Bien x co gia tri =10 nam o dia chi FFC6 (ngẫu nhiên)  Chú ý: hai cách gọi mảng a tương đương  a = &a[0] : cho địa mảng  a[n] = *(a+n) : cho gía trị phần tử mảng thứ n Ví dụ 4.11: Xem địa biến mảng #include main( ) { int a [ ]={ 1, 2, 3, 4}, k ; printf ("\n Dia chi cua mang la %p", a); printf ("\n Dia chi cua phan tu dau tien cua mang la %p", &a[0]); printf ("\n So sanh \n"); 59 for (k=0; k A[j]) { phu = A[i]; A[i]=A[j]; A[j] = phu;} } void in(float A[], int n) { int i; for(i = 0; i < n; i++) printf(“\n Phần tử A[%d] = %6.2f”, i, A[i]); getch(); } } Chú ý: để xếp cần phối hợp giải thuật đổi chỗ * Giải thuật đổi chỗ: Giả sử bạn có ly dung tích nhau, ly A chứa đầy ly nước màu đỏ, ly B chứa nửa ly nước màu xanh Hãy tìm cách để đổ nước màu xanh vào ly A, đổ nước màu đỏ sang ly B Muốn thực việc này, bạn sử dụng ly thứ ba (ly C) thao tác sau: .Đầu tiên đổ nước màu đỏ từ ly A sang ly C .Đổ nước màu xanh từ ly B sang ly A .Đổ nước màu đỏ từ ly C sang ly B Kết thúc giải thuật 62 Theo phương pháp này, so sánh phần tử thứ với phần tử lại, thỏa mãn điều kiện tiến hành đổi chỗ với phần tử thứ để tìm phần tử nhỏ (hoặc lớn nhất) Sau tìm phần tử công việc tiếp tục với phần tử thứ 2, thực phần tử mảng kế cuối (vì xếp đến phần tử kế cuối phần tử cuối thỏa điều kiện) 4.4.2 Phương pháp Quicksort:  Có thể xếp nhanh hàm: Qsort(,,,) - Số phần tử: biến nguyên số phần tử muốn xếp - Kích thước: Là kích thước phần tử mảng - Biểu thức so sánh: Là hàm tác động lên địa phần tử cho giá trị: < xếp giảm > xếp tăng = la xếp Ví dụ 4.13: Viết chương trình tạo mảng ngẫu nhiên gồm 50 phần tử, sau sử dụng hàm qsort Turbo C để xếp gía trị theo chiều tăng dần #include #include #define MAX 50 randomize(); int a[MAX], i; sosanh(int *p, int *q) { if(*p < *q) else return -1; if(*p = = *q) return 0; else return 1; } main() { printf(“\n Tao mang ngau nhien \n”); for(i= ; i < MAX; a[i++]=random(1000)); 63 for(i= ; i< MAX ; printf(“%8d”, a[i++])); printf(“\ n Go phim bat ky de bat dau sap xep \n”); qsort(a, MAX, 2, sosanh); printf(“\n Đã xếp xong \n”); for(i= ; i< MAX ; printf(“%8d”, a[i++])); getch(); } 4.5 CÁC VÍ DỤ VỀ GIẢI THUẬT THÔNG DỤNG 4.5.1 Giải thuật dịch chuyển: Giả sử bạn có mảng A B mảng có n phần tử Hãy dịch chuyển A sang B cho phần tử thứ i A chuyển sang phần tử thứ i B  Đầu tiên chuyển phần tử thứ (số thứ tự =0) mảng A sang mảng B, ký hiệu a[0] sang B[0] Lúc mày biến đếm k =  Tăng K lên vị trí (tức phần tử thứ 2), chuyển phần tử thứ mảng A sang mảng B, tức A[1] sang B[1]  Tạo vòng lập (chu trình) để chừng k chưa lớn n tiếp tục chuyển A[k] -> B[k]  Thơng báo kết kết thúc giải thuật - Nếu dùng ngơn ngữ giải thuật, bạn mơ tả giải thuật dịch chuyển phần tử mảng sau: Giải thuật Dịch chuyển mảng Bắt đầu Các khai báo Hằng n = 100; /*mảng có 100 phần tử*/ Biến float A[n]; float B[n]; k = 0; Khi k

Ngày đăng: 21/12/2021, 16:58

Xem thêm:

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w