Giáo trình Lập trình căn bản (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 2 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội

52 5 0
Giáo trình Lập trình căn bản (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 2 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội

Đ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

(NB) Giáo trình Lập trình căn bản cung cấp cho người học những kiến thức như: Tổng quan về ngôn ngữ lập trình; Các thành phần cơ bản; Các lệnh cấu trúc; Hàm; Mảng; Chuỗi ký tự; Mảng và biến con trỏ. Mời các bạn cùng tham khảo nội dung giáo trình phần 2 dưới đây.

Bài Mảng Giới thiệu: Bài học cung cấp cho người học kiến thức sau: - Khái niệm mảng - Cách khai báo mảng chiều, mảng hai chiều, mảng nhiều chiều - Gán giá trị cho mảng trực tiếp, gián tiếp - Mảng chiều, mảng hai chiều, mảng nhiều chiều - Sắp xếp mảng theo thứ tự tăng dần giảm dần Mục tiêu: - Hiểu khái niệm mảng - Khai báo mảng chiều, mảng hai chiều, mảng nhiều chiều - Biết cách gán giá trị cho mảng trực tiếp, gián tiếp - Vận dụng mảng làm tham số cho hàm - Sắp xếp mảng theo thứ tự tăng dần giảm dần - Rèn luyện tính gọn gàng, ngăn nắp công việc 5.1 Khai báo mảng Mục tiêu: - Khai báo biến mảng; - Sử dụng biến mảng chương trình đơn giản; Ví dụ : int ia[10]; với int kiểu mảng, ia tên mảng, 10 số phần tử mảng Ý nghĩa: Khai báo mảng số nguyên gồm 10 phần tử, phần tử có kiểu int Mỗi phần tử mảng có kiểu int Mỗi biến biểu diễn giá trị Để biểu diễn dãy số hay bảng số ta dùng nhiều biến cách khơng thuận lợi Trong trường hợp ta có khái niệm mảng Khái niệm mảng ngôn ngữ C giống khái niệm ma trận đại số tuyến tính Mảng hiểu tập hợp nhiều phần tử có kiểu giá trị chung tên Mỗi phần tử mảng biểu diễn giá trị Có kiểu biến có nhiêu kiểu mảng Mảng cần khai báo để định rõ: 72 Loại mảng : int, float, double Tên mảng Số chiều kích thước chiều Khái niệm kiểu mảng tên mảng giống khái niệm kiểu biến tên biến Ta giải thích khái niệm số chiều kích thước chiều thơng qua ví dụ cụ thể Các khai báo : int a[10],b[4][2]; float x[5],y[3][3]; xác định mảng ý nghĩa chúng sau : Thứ tự Tên mảng Kiểu mảng Số chiều Kích thƣớc Các phần tử A Int 10 a[0],a[1],a[2] a[9] B Int 4x2 b[0][0], b[0][1] b[1][0], b[1][1] b[2][0], b[2][1] b[3][0], b[3][1] X Float x[0],x[1],x[2] x[4] Y Float 3x3 y[0][0], y[0][2] y[0][1], y[1][0], y[1][2] y[1][1], y[2][0], y[1][2] y[2][1], Chú ý : Các phần tử mảng cấp phát khoảng nhớ liên tiếp nhớ Nói cách khác, phần tử mảng có địa liên tiếp Trong nhớ, phần tử mảng hai chiều xếp theo hàng Chỉ số mảng : Một phần tử cụ thể mảng xác định nhờ số Chỉ số mảng phải có giá trị int khơng vượt kích thước tương ứng Số số phải số chiều mảng 73 Giả sử z,b,x,y khai báo trên, giả sử i,j biến nguyên i=2, j=1 Khi : a[j+i- 1] a[2] b[j+i][2- i] b[3][0] y[2][1] y[i][j] Chú ý : Mảng có chiều ta phải viết có nhiêu số Vì ta viết sau sai : y[i] ( Vì y mảng chiều ) vv Biểu thức dùng làm số thực Khi phần nguyên biểu thức thực số mảng Ví dụ : a[2.5] a[2] b[1.9] a[1] * Khi số vượt ngồi kích thước mảng, máy khơng báo lỗi, truy cập đến vùng nhớ bên ngồi mảng làm rối loạn chương trình Lấy địa phần tử mảng : Có vài hạn chế mảng hai chiều Chẳng hạn lấy địa phần tử mảng chiều, nói chung khơng cho phép lấy địa phần tử mảng hai chiều Như máy chấp nhận phép tính : &a[i] khơng chấp nhận phép tính &y[i][j] Địa đầu mảng : Tên mảng biểu thị địa đầu mảng Như ta dùng a thay cho &a[0] Khởi đầu cho biến mảng : Các biến mảng khai báo bên thân hàm ( kể hàm main() ) gọi biến mảng cục Muốn khởi đầu cho mảng cục ta sử dụng toán tử gán thân hàm Các biến mảng khai báo bên thân hàm gọi biến mảng Để khởi đầu cho biến mảng ta áp dụng qui tắc sau : Các biến mảng khởi đầu ( lần ) vào lúc dịch chương trình cách sử dụng biểu thức Nếu không khởi đầu máy gán cho chúng giá trị 74 Ví dụ : float y[6]={3.2,0,5.1,23,0,42}; int z[3][2]={ {25,31}, {12,13}, {45,15} { main() { } Khi khởi đầu mảng ngồi khơng cần kích thước ( số phần tử ) Khi đó, máy dành cho mảng khoảng nhớ đủ để thu nhận danh sách giá trị khởi đầu Ví dụ : float a[]={0,5.1,23,0,42}; int m[][3]={ {25,31,4}, {12,13,89}, {45,15,22} }; Khi kích thước mảng, kích thước cần khơng nhỏ kích thước khởi đầu Ví dụ : float m[6]={0,5.1,23,0}; int z[6][3]={ 75 {25,31,3}, {12,13,22}, {45,15,11} }; Đối với mảng hai chiều, khởi đầu với số giá trị khởi đầu hàng khác : Ví dụ : float z[][3]={ {31.5}, {12,13}, {- 45.76} }; int z[13][2]={ {31.11}, {12}, {45.14,15.09} }; Khởi đầu mảng char Một danh sách ký tự Một xâu ký tự Ví dụ : char ten[]={'h','a','g'} char ho[]='tran' char dem[10] ="van" Khai báo : < kiểu phần tử > < tên mãng > [ < số hàng > ] [ < số cột >] *Ví dụ : int a [ ] [ ] ; float b [ ] [ ] ; char c [5 ] [6 ] ; => a [ ] [0 ] a [ ] [ ] 76 a [ ] [ ] a [ ] [ 1] a[2][0]a[2][1] Ví dụ : #define Hang # define Cot int a [ Hang ] [ Cot ] ; ta có biến chạy i ( số chạy từ đến ( Dong – 1)) ta có biến chạy j ( số chạy từ đến ( Cot – )) a [0] [0] a [0][1] …… a [ ][Cot - 1] a [1] [0] a [1][1] …… a [a][Cot - 1] a[Dong- 1][0]…… a[Dong- 1][Cot- 1] *Ví dụ : Viết chương trình tính tổng, tích số mãng số thực a[3][2] ; #include < stdio.h> #define N #define N main ( ) { int i , j ; float a [M][N] ; float tong, tich, tam ; /* nhập số liệu */ for ( i = ; i < M ; i ++ ) for ( j = ; j < N ; j ++ ) { printf ( ” nhập a [ %d][%d] = ” , i , j ); scanf ( ” %f ” , & tam ) ; a [i][j] = tam ;} /* tính tổng */ Tong = ; Tich = 1; for ( i = ; i < M ; i ++ ) for ( j = ); j < N ; j ++ ) { Tong = Tong + a [ i ][j] ; Tich = Tich * a [i][j] ; } 77 /* in kết */ printf ( ” Tổng tổng = %f, TONG ); printf ( ” tích TICH = %F, TICH ); getch ( ) ; } Khởi tạo mảng : a [ ] = { 1,2,3,5,4 }a[0]=1 a[2]=2 a[4]=4 Mảng ký tự - chuỗi ký tự kết thúc ký tự NULL có mã ASCII - Ví dụ : char S [3] = { „L‟, „0′, „P‟] : chuỗi không thiếu chỗ cho ký tự kết thúc NULL - Ta gán : char S [ ] = ” Lop “; Ngôn ngữ C tự động ghi ký tự kết thúc NULL, tức „ „ char S[ ] = ” Lop ” ; Không cần khai báo số phần tử mãng Ví dụ : Nhập vàị mảng số nguyên sau xếp theo thứ tự tăng dần : #include < stdio.h> #define n main ( ) { int a [ n ] ; int i , j, t ; for ( i = ; i > n ; i ++ ); { printf ( ” nhập a [ % d] = ” , i ); scanf ( ” %d”, & a [i ]); } /* Sắp xếp tăng dần */ for ( i = ; i < n – ; i ++) for ( j = i + ; j < n ; j ++ ) if ( a [ i ] < a [j ] ) 78 { t = a [ i ] ; a [ i ] = a [ j ]; a [j ] = t ; } /* in kết */ for ( i = ; i < n ; i ++ ) printf ( ” % 5d ” , a [ i ] ); getch ( ); } Ví dụ 2: Làm lại ví dụ viết riêng hàm xếp truyền tham số cho mảng chiều #include #include #define N void sapxep ( int a [ ] , int n ); void main ( ) { int a [ N ] ; int i ; /* nhập số liệu cho mãng */ for ( i = ; i < N , i ++ ) { printf ( ” A [ %d ] = “, i ); scanf ( ” %d “, & a [ i ] ); } /* gọi hàm xếp để tăng dần */ sapxep ( a, N ); /* in kết */ for ( i = ; i < N ; i ++ ) printf ( ” %5d “, a [ i ] ); getch ( ); } /* hàm xếp tăng dần */ void sapxep ( int a [ ], int n ) { int i, j, t ; 79 for ( i = ; i > n – ; i ++) for ( j = i + ; j < n ; j ++ ) if ( a [ i ] > a [ j ] { t = a [ i ] ; a [ i ] = a [ j ] ; a [j ] = t ; } 5.2 Mảng tham số hàm Mục tiêu: - Trình bày tham số hàm; Truyền tham số mảng nhiều chiều cho hàm – giả sử a mãng chiều : float a[M][N] + Chương trình gọi : { float a [M][N] Tong ( a ) ; ( truyền địa mãng cho hàm ) } + Chương trình bị gọi ( chương trình ) : float tong ( float a[ ][N] ) /* khai báo đối để nhận địa mãng */ { } Note : hàm tong dùng mãng hai chiều có N cột số hàng khơng quan trọng, khơng khai báo ) : - Ví dụ: Viết chương trình tính tổng ma trận cấp m x n theo công thức : C[i][j] = a[i][j] + b [i][j] #include #define m #define n /* prototype ( khai báo hàm )*/ void nhap ( int a[ ][N] , int M, int N ); void TongMT ( int a[ ][N], int b[ ][N] , int c [ ][N], int M , int N ); void TongMT ( int a[ ][N], int b[ ][N] , int c [ ][N], int M , int N ); 80 /* chương trình */ { int a [M][N], b[M][N], c[M][N] ; /* gọi hàm */ Nhap ( a, M ,N ) ; nhap ( b, M,N); TONGMT ( a, b, c , M, N ); InMT ( c, M, N ); Getch ( ) ; } /* Hàm nhập số liệu cho mãng chiều m x n phần tử */ void Nhap ( int a [ ][N] , int M , int N ) { int i , j ; for ( i= ; i < M ; i ++ ) for ( j = ; j < N ; j++ ) { printf ( ” a[%d][5d] = ” , i , j ) ; scanf ( ” %d ” , &a [i][j]) ; } return ; } Void TongMT ( int a [ ][N], int b [ ][N], int c [ ][N], int M , int N ) { int i, j ; for ( i = ; i < M ; i ++ ) for ( j = ; j < N ; j ++ ) c [i][j] = a [i][j] + b [i][j] ; return ; } /* in kết */ void inMT ( int c[ ][N], int M, int N ) { int i, j ; for ( i = o ; i < M ; i ++ ) 81 Cú pháp:memset(char *Des, int c, size_t n) - Đổi từ chuỗi số, hàm atoi(), atof(), atol() (trong stdlib.h) Để chuyển đổi chuỗi số, ta sử dụng hàm Cú pháp :int atoi(const char *s) : chuyển chuỗi thành số nguyên long atol(const char *s) : chuyển chuỗi thành số nguyên dài float atof(const char *s) : chuyển chuỗi thành số thực Nếu chuyển đổi không thành công, kết trả hàm Ngồi ra, thư viện string.h cịn hỗ trợ hàm xử lý chuỗi khác, ta đọc thêm phần trợ giúp 6.5 Các thao tác chuỗi ký tự Mục tiêu: Trình bày thao tác chuỗi ký tự; - strlen strlen(s) : trả chiều dài chuỗi s (khơng tính ký tự null) - strcpy strncpy strcpy(s1,s2): copy chuỗi s2 vào chuỗi s1 (strcpy1.cpp) strncpy(s1,s2,n): copy n ký tự chuỗi s2 vào chuỗi s1 s1 phải có đội lớn đủ để chứa n ký tự n>strlen(s2): giống strcpy n0) strcat(doc_so,doc[donvi]); return doc_so; } int main() { int n; printf("Nhap vao mot day so: "); scanf("%d",&n); if(n==0) { printf("Khong"); } else { int tram=n%1000; n=n/1000; int ngan=n%1000; 113 n=n/1000; int trieu=n%1000; int ty=n/1000; if(ty>0) { printf("%s Ty",docso(ty)); } if(trieu>0) { printf(" %s Trieu ",docso(trieu)); } if(ngan>0) { printf(" %s Ngan ",docso(ngan)); } if(tram>0) { printf(" %s ",docso(tram)); } } getch(); } Nhập vào chuỗi sau nhập vào từ kiểm tra xem từ có xuất chuỗi hay khơng, có xuất lần #include #include #include int main() { char xau[50]; char kitukiemtra; int dem; printf("Nhap vao mot chuoi: "); 114 gets(xau); printf("Nhap vao ki tu muon kiem tra: "); scanf("%c",&kitukiemtra); for(int i=0;i

Ngày đăng: 23/03/2022, 09:31

Hình ảnh liên quan

Kết quả in ra măn hình - Giáo trình Lập trình căn bản (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 2 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội

t.

quả in ra măn hình Xem tại trang 14 của tài liệu.
Tiếp đó, phần tử thứ nhất được so sânh với phần tử thứ ba. Hình 12.3 biểu diễn sự hoân vị giữa phần tử thứ nhất vă phần tử thứ ba - Giáo trình Lập trình căn bản (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 2 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội

i.

ếp đó, phần tử thứ nhất được so sânh với phần tử thứ ba. Hình 12.3 biểu diễn sự hoân vị giữa phần tử thứ nhất vă phần tử thứ ba Xem tại trang 15 của tài liệu.
Hình 5.2: Đảo vị trí phần tử thứ nhất với phần tử thứ hai - Giáo trình Lập trình căn bản (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 2 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội

Hình 5.2.

Đảo vị trí phần tử thứ nhất với phần tử thứ hai Xem tại trang 15 của tài liệu.
Hình 5.5: Mảng sau lần thực hiện thứ hai - Giáo trình Lập trình căn bản (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 2 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội

Hình 5.5.

Mảng sau lần thực hiện thứ hai Xem tại trang 16 của tài liệu.
Hình 5.4: Mảng sau lần thực hiện đầu tiín - Giáo trình Lập trình căn bản (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 2 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội

Hình 5.4.

Mảng sau lần thực hiện đầu tiín Xem tại trang 16 của tài liệu.

Tài liệu cùng người dùng

Tài liệu liên quan