1. Trang chủ
  2. » Giáo án - Bài giảng

Kỹ thuật lập trình 1

136 0 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

Thông tin cơ bản

Tiêu đề Kỹ Thuật Lập Trình 1
Trường học Hutech
Chuyên ngành Công Nghệ Thông Tin
Thể loại Giáo Trình
Thành phố TP.HCM
Định dạng
Số trang 136
Dung lượng 3,45 MB

Nội dung

theo ki u con tr.. Thi th c hành trên máy.. Hàm kbhit: Cú pháp : int kbhit void Hàm 2.. Cú pháp: char *strncpychar *Des, const char *Source, size_t n 11.

Trang 1

I H C CÔNG NGH TP.HCM

Biên

Trang 2

5

Trang 3

I IV

U 1

1.1 KHÁI 1

1

2

3

4

6

7

1.2 KÝ CÁC KÝ 9

9

11

1.2.3 Các thao tác trên chu i ký t 12

1.2.4 M t s hàm x lý chu i (trong < string.h>) 13

TÓM 22

CÂU ÔN 22

U 28

2.1 KHÁI 28

2.2 CÁCH KHAI BÁO HAI 28

2.2.1 Cú pháp 28

29

29

2.3 CHO HAI 30

30

32

2.4 CHO HAI 34

34

35

2.5 VÀI TOÁN TRÊN M HAI 37

2.5.1 Bài toán 1 37

2.5.2 Bài toán 2 38

TÓM 40

CÂU ÔN 40

43

3.1 KHÁI 43

3.2 CÁCH KHAI BÁO TRÚC 44

Trang 4

3.2.1 Cú pháp 44

3 44

45

45

3.3 TRUY VÀO TRÚC 46

3.3.1 Cú pháp 46

46

46

3.4 CHO CÓ TRÚC 47

47

48

3.5 49

49

49

3.6 TRÚC 49

3.6.1 Bài toán 1 49

3.6.2 Bài toán 2 51

3.7 VÀI TRÊN TRÚC 51

3.7.1 Bài toán 1 51

3.7.2 Bài toán 2 52

TÓM 52

CÂU ÔN 53

57

4.1 KHÁI Ô VÀ CON 57

4.2 KHAI BÁO VÀ S CON TR 58

4.2.1 Khai báo bi con tr 58

59

4.3 CÁC PHÉP TOÁN TRÊN CON 61

4.3.1 Phép gán 61

4.3.2 Ph 62

62

4.3.4 Phép so sánh 63

4.4 CON PHÁT VÀ THU 63

64

66

66

4.5 CON VÀ 67

4.5.1 Truy p các ph ng theo d 67

ng ph qu n lý b theo ng m ng 68

4.6 CON VÀ HAI 72

4.6.1 Bài toán 2 72

Trang 5

4.6.2 Cách 1 73

4.6.3 Cách 2 76

4.7 CON CÓ TRÚC (STRUCT) 79

79

79

81

TÓM 83

CÂU ÔN 83

95

5.1 KHÁI 95

5.2 PHÂN HÀM QUY 97

98

99

100

101

5.3 BÀI TOÁN QUY 102

103

5.4 XÉT 106

5.5 TRÚC VÀ QUY 106

TÓM 107

CÂU ÔN 107

BÀI 6: T P TIN (FILE) 110

6.1 KHÁI 110

6.2 CÁC THAO TÁC TRÊN TIN 111

6.2.1 Khai báo bi n t p tin 112

6.2.2 M t p tin 112

óng p tin 113

6.2.4 Ki tra i t p tin hay a? 113

6.2.5 Di chuy con tr t p tin v u p tin - Hàm rewind() 114

6.3 TRUY C P TIN V B N 114

6.3.1 Ghi d li lên p tin v n n 114

6.3.2 c li t t p tin v 116

6.4 TRUY C P TIN PHÂN 118

6.4.1 Ghi d li lên p tin phân - Hàm fwrite() 118

c li t t p tin nh phân - Hàm fread() 118

6.4.3 Di ch con tr t p tin - Hàm fseek() 118

TÓM 125

CÂU ÔN 125

TÀI THAM 128

Trang 6

L p Trình cung c cho sinh viên ng k th b và nâng cao v trình thông qua ngôn ng l p trình C Môn h c này là thu

h môn c khác trong trình ào t o khác, ng môn này là c s các bài toán và các ng d

H c xong môn này, sinh viên ph i n c các v sau:

- X lý các bài toán trên m ng m t chi u

- X lý các bài toán trên m ng hai chi u

- K thu t dùng con tr

- Bi t k thu t vi quy và kh qui

- Bi t xây d ng và x lý các bài toán trên d li u có c nh

- và x lý các file trong C

- Tìm hi t m t s

tu bài toán tám h quy quay

pháp sinh d li u

Trang 7

- Bài 1 M ng m t chi u: Bài này cung c p cho h c viên khái ni m v m ng m t chi u, cách nh p, xu trên m ng m t chi u v i các d li u ki u s và ki u chu i, x lý các bà ng các giá tr trên m ng m t chi u các s nguyên, s th c, tìm ph n t nh nh t, l n nh t, thêm, xóa, s p x p các ph n t trên m ng d li u ki u s , x lý các bài toán trên d li u ki u chu i

- Bài 2 M ng hai chi u: Bài này cung c p cho h c viên khái ni m v m ng hai chi u, cách nh p, xu trên m ng hai chi u, x

t ng các giá tr trên m ng s nguyên, s th c, tìm ph n t nh nh t, l n nh t, s p

x p các ph n t trên m ng d li u ki u s , ki u chu i

- Bài 3 Ki u d li u có c u trúc: Bài này cung c p cho h c viên khái ni n

v ki u d li u có c t Nh p Xu t d li u có

c u trúc cho m t ph n t Bi t Nh p, Xu t d li u có c ng

m t chi u Cách tìm ki m và s p x p d li u trên m ng m t chi u v i t ng thành

ph n c a d li i thu t trên m ng m t chi m, s p

x p, thêm ph n t , xóa ph n t

- Bài 4 Ki u con tr : Bài này cung c p cho h c viên khái ni n v ki u d

li u con tr , cách khai báo và s d ng bi n ki u con tr M ng và các phép toán trên m ng m t chi u theo ki u con tr M ng và các phép toán trên m ng hai chi u theo ki u con tr i thu t trên m ng 1 chi u, 2 chi

tìm ki m, s p x p, thêm ph n t , xóa ph n t theo ki u con tr Con tr v i

ki u d li u có c u trúc

- Bài 5 quy: Bài này cung c p cho h c viên khái ni n v ki u l p trình

hàm b quy Gi i quy t m t s n b

quy X lý các gi i thu t trên m ng 1 chi u b quy

- Bài 6 T p tin: Bài này cung c p cho h c viên m t s khái ni m v t p tin Các

b c thao tác v i t p tin Thao tác trên t p tin v n b n Thao tác trên t p tin nh phân

Trang 9

BÀI 1:

Sau khi h

- Hi u c khái ni m v ki u d li u c a m ng d ng c a nó;

- Bi t cách khai báo bi n ki u m ng và các phép toán trên các ph n t c a m ng;

Ta có th chia m ng làm 2 lo i: m ng m t chi u và m ng nhi u chi u

M ng là ki u d li u c s d ng r t th ng xuyên Ch ng h n, ng i ta c n

qu n lý m t danh sách h và tên c a kho ng 100 sinh viên trong m t l p Nh n

th y r ng m i h và tên l u tr ta c n 1 bi n ki u chu i, n v y 100 h và tên thì c n khai báo 100 bi n ki u chu i N u khai báo nh th này thì o n khai báo

c ng nh thao tác trên các h tên s r t dài dòng và r c r i Vì th , ki u d

li u m ng giúp ích ta trong tr ng h p này; ch c n khai báo 1 bi n, bi n này có th coi nh là ng ng v i 100 bi n ki u chu i ký t ; ó là 1 m ng mà các ph n

t c a nó là chu i ký t Hay nh l u tr các t khóa c a ngôn ng l p trình C,

ta c ng dùng n m t m ng l u tr chúng

Trang 10

N toán h c, m ng 1 chi u gi m t vector M i ph n t

c a m ng m t chi u có giá tr không ph i là m t m ng khác

1.1.2 Cách khai báo m ng m t chi u

- <Ki >: là ki u d li u c a m i ph n t c a m ng

int songuyen [10] ;

sothuc float sothuc [15] ;

daykytu char daykytu [30] ;

Cú pháp

Khi khai báo, không cho bi t rõ s ph n t c a m ng, ki u khai báo này ng

c áp d ng trong các ng h p: v a khai báo v a gán giá tr , ho c khai báo

m ng là tham s hình th c c a hàm

Trang 11

Cách 1 V a khai báo v a gán giá tr

Cú pháp:

<Ki u> <Tên m ng> []= {Các giá tr cách nhau b i d u ph y}

N u v a khai báo v a gán giá tr thì m c nhiên C s hi u s ph n t c a m ng

là s giá tr mà chúng ta gán cho m ng trong c p d u {}

Ví d : float x[] = {12.1 , 7.23 , 5.0 , 27.6 , 87.9 , 9.31};

Chúng ta có th s d ng hàm sizeof() bi t s ph n t c a m

S ph n t =sizeof(tên m ng)/ sizeof(ki u)

Cách 2 Khai báo m ng là tham s hình th c c a hàm, trong tr ng h p này

ta không c n ch nh s ph n t c a m ng là bao nhiêu

Ví d : void nhapmang ( int a[ ], int n )

1.1.3 Truy c p vào các ph n t c a m ng

M i ph n t c a m ng c truy xu t thông qua Tên bi n m ng theo sau là

ch s n m trong c p d u ngo c vuông [ ]

Ch ng h n a[0] là ph n t u tiên c a m ng a c khai báo trên

Ch s c a ph n t m ng là m t bi u th c mà giá tr là ki u s nguyên

V i cách truy xu t theo ki u này, Tên bi n m ng[Ch s ] có th coi n là m t

float a [5] ;

a [0], a [1], a [2], a [3], a [4] float

oán : float t=10.0;

Trang 12

a[0] a[1] a[2] a[3] a[4] a[n-3] a[n-2] a[n-1]

a [ 1 ]

a [ n- -1 ] );

Trang 13

for ( int i =0 ; i<n ; i++)

a[0] a[1] a[2] a[3] a[4] a[n-3] a[n-2] a[n-1]

Trang 14

1.1.5 Xu t d li u cho m ng m t chi u

0 1 2 3 4 n-3 n-2 n-1 a[ ] 7 3 9 4 5 8 12 2

a[0] a[1] a[2] a[3] a[4] a[n-3] a[n-2] a[n-1]

a[0] a[1] a[2] a[3] a[4] a[n-3] a[n-2] a[n-1]

Trang 15

0 1 2 3 4 n-3 n-2 n-1 a[ ] 7 3 9 4 5 8 12 2

a[0] a[1] a[2] a[3] a[4] a[n-3] a[n-2] a[n-1]

- 1]

for ( int i= 0 ; i<n ; i++ )

S= S + a[i] ;

Trang 16

long tinhtong ( int a[ ] , int n )

{

long s =0 ;

for ( int i = 0 ; i<n ; i++ )

s=s+ a[i] ; return s;

}

Bài toán 2

0 1 2 3 4 n-3 n-2 n-1 a[ ] 7 3 -9 4 5 8 12 2

for ( int i= 0 ; i<n ; i++ )

}

Trang 19

1.2.2 Chu i

1.2.2.1 Khái ni m

Trong

c k t thúc b ng ký t \ c g i là ký t NULL trong b ng mã Ascii )

Các h ng chu i ký t c t trong c p d u nháy kép

1.2.2.2 Cách khai báo chu i

1 Khai báo chu i :

Ví d : char Hoten [20];

2 V a khai báo v a gán giá tr :

Ví d : char chu thu t l

\

\

\

Trang 20

1.2.2.3 L i khi t o m t chu i

1 Chú ý: Không s d ng toán t chép n i dung c a m t chu i này sang chu i khác

Char char b[4];

i v i hàm scanf khi g p phím space, tab, new line, Enter thì d ng, cho nên ch

nh p chu i không có kho ng tr ng

Trang 21

1.2.3.2 Nh p xu t chu n <string.h>

1 Nh p: gets (Hoten);

Ti p nh c space, tab, new line

G p Enter thì d ng, ph i khai báo hàm xóa b m c khi dùng hàm gets : fflush ( stdin) hay flushall ( )

1.2.4 M t s hàm x lý chu i (trong < string.h>)

Cú pháp: void gotoxy( int x,int y)

4 Nh p xu t chu i v i hàm scanf và printf

Trang 22

printf("\nNhap chuoi 1 : "); gets(s1);

printf("Nhap chuoi 2 : "); gets(s2);

Trang 23

if (p != NULL) printf("\nchi so cua ky tu : %d",(int)(p-s));

else printf("\nKhong tim thay!");

Hàm này th c hi n vi c so sánh trong n ký t u tiên c a 2 chu i s1 và s2,

gi a ch th ng và ch hoa không phân bi t

K t qu tr v ng t k t qu tr v c a hàm strcmp()

9 Hàm strcpy :

Hàm c dùng sao chép toàn b n i dung c a chu i ngu n vào chu i ích

Cú pháp: char *strcpy (char *Des, const char *Source)

#include "stdio.h"

Trang 24

#include "string.h"

void main() {

char s[50];

strcpy(s,"Truong Dai hoc Ky thuat");

printf("\nXuat chuoi : %s",s);

}

10 Hàm strncpy () : Sao chép m t ph n chu i

Hàm này cho phép chép n ký t u tiên c a chu i ngu n sang chu i ích

Cú pháp: char *strncpy(char *Des, const char *Source, size_t n)

N u ký t ã ch nh không có trong chu i, k t qu tr v là NULL

K t qu tr v c a hàm là m t con tr , con tr này ch n ký t c c tìm

th y u tiên trong chu i str

12 Tìm ki m n i dung chu i - hàm strstr()

Hàm strstr() c s d ng tìm ki m s xu t hi n u tiên c a chu i s2 trong chu i s1

Cú pháp: char *strstr(const char *s1, const char *s2)

K t qu tr v c a hàm là m t con tr ch n ph n t u tiên c a chu i s1 có

ch a chu i s2 ho c giá tr NULL n u chu i s2 không có trong chu i s1

b t u t chu hoc

Trang 25

- trich ra:

getch();

return 0;

}

13 L y chi u dài chu i v i hàm strlen()

Cú pháp : int strlen ( const char *s );

#include <stdio.h>

#include <string.h>

void main( ) {

char string [ ] = "Borland International";

printf("%d\n", strlen(string)); // k t qu 21 getch ( );

}

Trang 26

S d ng hàm strlen xác nh dài m t chu i nh p t bàn phím

#include<conio.h>

#include<stdio.h>

#include<string.h>

int main() {

char Chuoi [255];

int Dodai;

printf("Nhap chuoi: ");gets(Chuoi);

Dodai = strlen(Chuoi) printf("Chuoi vua nhap: ");puts(Chuoi);

do dai getch();

clrscr() ;

char newstr [35];

i h c Công Ngh for(int i = 0; i<strlen(str); i++)

newstr[i] = str[i];

Trang 27

\getch () ; }

8 i m t ký t th ng thành ký t hoa - Hàm toupper()

Hàm toupper() (trong ctype.h) c dùng chuy n i m t ký t th ng thành ký t hoa

9 i chu i ch ng thành chu i ch hoa - Hàm strupr()

Hàm strupper() c dùng chuy n i chu i ch th ng thành chu i ch hoa,

k t qu tr v c a hàm là m t con tr ch n a ch chu c chuy n i

Cú pháp: char *strupr(char *s)

hàm strupr() chuy n i chúng thành chu i ch hoa

#include<conio.h>

#include<stdio.h>

#include<string.h>

int main() {

Trang 28

10 i chu i ch hoa thành chu i ch ng - Hàm strlwr()

Mu n chuy n i chu i ch hoa thành chu i toàn ch th ng, ta s d ng hàm strlwr(), các tham s c ng t strupr()

Cú pháp: char *strlwr (char *s)

11 i t chu i ra s , hàm atoi(), atof(), atol() (trong stdlib.h)

chuy n i chu i ra s , ta s d ng các hàm trên

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 qu tr v c a các hàm là 0

12 char* strtok (char *s1 , const char *s2)

Xem s1 là 1 lo t chu i 1 hay nhi u ký t có trong s2

Ví d :

#include <string.h>

void main() {

char s[80] , *p ; gets(s);

p = strtok(s," ");

p);

while(p) {

p = strtok(NULL," ");

} }

Trang 29

13 c chu i : char* strrev(char *s)

thêm trong ph n tr giúp

Trang 30

TÓM T

- Bài này cung c p cho h c viên khái ni m v m ng m t chi u, cách nh p, xu

các giá tr trên m ng m t chi u các s nguyên, s th c, tìm ki m các ph n t nh

li u ki u s

- Cung c p cho h c viên khái ni m v cách nh p, xu trên m ng m t chi u

v i các d li u ki u ký t , x lý các bài toán tìm ki m, so sánh, c t chu i ( m ng

Trang 32

BÀI 1

- Sinh viên ph i bi t cách nh p, xu trên m ng m t chi u v i các d li u

ki u s , x ng các giá tr trên m ng m t chi u các s nguyên, s th c, tìm ki m các ph n t nh nh t, l n nh t, ch u, l

cu i thêm, xóa, s p x p các ph n t trên m ng d li u ki u s

- Sinh viên ph i bi t cách nh p, xu trên m ng m t chi u v i các d li u

ki u ký t , x lý các bài toán tìm ki m, so sánh, c t chu i

Trang 36

BÀI 2:

- Hi u c các khái ni n v Nh p, Xu t d li u trên m ng 2 chi u;

- Bi t cách khai báo bi n ki u m ng và các phép toán trên các ph n t c a m ng;

- i thu t trên m ng 2 chi m, s p x p, thêm ph n t , xóa ph n t

2.1 KHÁI NI M

- c c a m ng là s ph n t c a m c này ph c bi t ngay khi khai báo m ng

- M ng nhi u chi u là m ng có t 2 chi u tr lên u ó có ngh a là m i ph n t

c a m ng là m t m ng khác

- Ng i ta th ng s d ng m ng nhi u chi u các ma tr n, các t a 2 chi u, 3 chi

Trang 37

4 S ph n t : là m t h ng s nguyên, cho bi t s l ng ph n t t i trong

m ng là bao nhiêu (hay nói khác c c a m ng) S ph n t c a

char str[12][30];

2.2.3 Truy c p vào các ph n t c a m ng

M i ph n t c a m ng c truy xu t thông qua Tên bi n m ng theo sau là

ch s n m trong c p d u ngo c vuông [ ][ ]

Ch ng h n a[0][ 0 ] là ph n t u tiên c a m ng a c khai báo trên

Ch s c a ph n t m ng là m t bi u th c mà giá tr là ki u s nguyên

V i cách truy xu t theo ki u này, Tên bi n m ng[Ch s ] [Ch s ] có th coi

Trang 38

2.3 NH P D LI U CHO M NG HAI CHI U

2.3.1 Nh p d li u cho m ng hai chi u các s nguyên

Trang 42

2.4 XU T D LI U CHO M NG HAI CHI U

2.4.1 Xu t d li u cho m ng hai chi u các s nguyên

Trang 44

a [ 0 ][ n- -1] ); for ( int j=0 ; j< n ; j++ )

- Xu t d li u cho dòng th hai

a [ 1 ][ n- -1] ); for ( int j=0 ; j< n ; j++ )

pri -1][j] );

Trang 45

for ( int i =0 ; i<m ; i++)

Ngày đăng: 06/02/2024, 07:19