1. Trang chủ
  2. » Công Nghệ Thông Tin

kỹ thuật lập trình C chuyên nghiệp phần 2 pot

18 344 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Định dạng
Số trang 18
Dung lượng 586,78 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phương pháp Heuristicy Trong nhiều bài toán dùng phương pháp thử - sai sẽ dẫn đến số lượng thử quá lớn không chấp nhận được.. y Heuristic chính là ước lượng về khả năng dẫn đến lời giải

Trang 1

Phương pháp Heuristic

y Trong nhiều bài toán dùng phương pháp thử - sai sẽ dẫn

đến số lượng thử quá lớn không chấp nhận được.

y Heuristic chính là ước lượng về khả năng dẫn đến lời giải

của một trạng thái: phương pháp vét cạn nhưng có thêm tri

thức đi kèm, tối ưu cục bộ, nguyên lý hướng đích, nguyên

lý sắp thứ tự,

í d

y ví dụ:

Một em bé bị lạc đường về nhà, em nhớ nhà mình cao nhất trong khu vực em sẽ tìm đến tòa nhà cao nhất trong vùng em thấy, rồi lại tiếp tục , Giải phương trình bậc 2, đoán nghiệm theo Vi-ét

Trang 2

kiế h hiề hiề

Tìm kiếm theo chiều sâu và chiều rộng

y Là thử sai theo nguyên lý mê cung hay chính là thử

y Là thử sai theo nguyên lý mê cung hay chính là thử

-sai kết hợp lần ngược.

y Ngược với tìm kiếm theo chiều sâu tìm kiếm theo chiều

y Ngược với tìm kiếm theo chiều sâu, tìm kiếm theo chiều

rộng mang hình ảnh của vết dầu loang.

Giải thuật A ậ *

Trang 3

Phương pháp trí tuệ nhân tạo g p p ệ ạ

y "Dạy" máy tính để có "trí thông minh" như con người

y Dạy máy tính để có trí thông minh như con người

bắt chước khả năng "suy luận" của con người.

ví dụ: bài toán đong nước có 3 bình A B và C có dung tích 5, 8, và 13 lít Làm sao đong được 11 lít nước trong bình C? Bình C ban đầu đầy nước

bình C? Bình C ban đầu đầy nước.

Trang 4

Một số phương pháp chuyển giao tri thức

1 Biểu diễn tri thức

2 Hệ chuyên gia

3 Máy học

Trang 5

M Mảảng ng Array Array M

Mảảng ng Array Array

Phạm Thế Bảo Trường Đại học Khoa học Tự nhiên Tp HCM

Trang 6

Mả A Mảng

Mảng –– Array Array

„ MộtMột sốsố tínhtính chấtchất

Kh i

Kh i bábá ảả tt C

„ KhaiKhai báobáo mảngmảng trongtrong CC

„ TruyTruy xuấtxuất cáccác thànhthành phầnphần

„ TruyềnTruyền thamtham sốsố kiểukiểu mảngmảng chocho hàmhàm

„ MộtMột ốố thth tá ởở

„ MộtMột sốsố thaothao táctác cơcơ sởsở

„ MảngMảng nhiềunhiều chiềuchiều

Trang 7

Mả Mộ ố í h hấ

Mảng

Mảng –– Một số tính chất

„ MảngMảng làlà mộtmột kiểukiểu dữdữ liệuliệu cócó cấucấu trúctrúc dodo ngườingười lậplập trình

trình địnhđịnh nghĩanghĩa

Dù biểbiể diễdiễ áá đốiđối tt dữdữ liệliệ ởở dd ột

„ DùngDùng biểubiểu diễndiễn cáccác đốiđối tượngtượng dữdữ liệuliệu ởở dạngdạng mộtmột dãy

dãy cáccác thànhthành phầnphần cócó cùngcùng kiểukiểu vớivới nhaunhau –– kiểukiểu cơcơ sở

„ NNLTNNLT CC luônluôn chỉchỉ địnhđịnh mộtmột khốikhối nhớnhớ liênliên tụctục chocho một

một biếnộộ biến kiểukiểu mảngmảnggg

„ KíchKích thướcthước củacủa mảngmảng đượcđược xácxác địnhđịnh ngayngay khikhi khaikhai báo

báo vàvà khôngkhông baogg bao giờgiờ thaygg thay đổiyy đổi

Trang 8

Mả Kh i bá Kh i bá C C

Mảng

Mảng –– Khai báo trong C

t d f

t d f kiể kiể ơ ở ơ ở Tê kiể [Sốthà h hầ ] typedef kiểucơsở Tênkiểu [Sốthànhphần] ;

kiểu của mỗi thành phần hằhằ ố ố thà h hầố ố thà h hầ

kiểu của mỗi thành phần hằng số, số thành phần

tối đa của mảng

do lập trình viên đặt tên

typedef int AINT[ 100 ];

//

//AINT AINT là kiểu mảng biểu diễn dãy gồm 100 thành phần int là kiểu mảng biểu diễn dãy gồm 100 thành phần int

AINT a; //a: //a: biến biến kiểu kiểu AINT AINT

Trang 9

Mảng Ví d

Mảng

Mảng –– Ví dụ

#define SIZE 10

#define SIZE 10

int a[5]; // a dãy gồm 5 số nguyên long int big[100]; // big: chiếm 400 bytes! double d[100]; [ ] // d: chiếm 800 bytes! // y

long double v[SIZE];// v:10 long doubles

long double d[2.5];

long double d[0];

long double d[-4];

long do ble d[n]

long double d[n];

Trang 10

Mảng Ví d khởi trị cho 5

Mảng

Mảng –– Ví dụ

khởi trị cho 5 thành phần

2 thành phần đầu tiên được

đầu tiên được khởi trị, phần còn lại: 0

compiler xác định kích thước gồm 7

khởi trị tất cả các thành phần bằng 0

Trang 11

Mảng –– Truy Truy xuất xuất các các phần phần tử tử

„ CácCác thànhthành phầnphần củacủa mảngmảng đượcđược truytruy xuấtxuất thôngthông quaqua chỉchỉ sốsố

ủủ hú 00 ii 11

Mảng Truy Truy xuất xuất các các phần phần tử tử

của

của chúngchúng 00 sizesize 11

„ ThaoThao táctác truytruy xuấtxuất khôngkhông kiểmkiểm tratra giớigiới hạnhạn củacủa chỉchỉ sốsố nhưng

nhưng giágiá trịtrị khôngkhông kiểmkiểm soátsoát đượcđược

nhưng

nhưng giágiá trịtrị khôngkhông kiểmkiểm soátsoát đượcđược

int main()

{

a[0] = 59;

0 1 2

a[0] = 59;

a[5] = -10;

a[i/2] = 2;

a[6] = 0;

2 3 4 a[6] = 0;

a[-1] = 5;

return 0;

5 }

Trang 12

T ề th ố Mả h hà

T ề th ố Mả h hà

Truyền tham số Mảng cho hàm

„ Th ốố kiểkiể ảả đđ tt ềề hh hàhà hí hhí h làlà địđị hỉ

„ ThamTham sốsố kiểukiểu mảngmảng đượcđược truyềntruyền chocho hàmhàm chínhchính làlà địađịa chỉchỉ của

của phầnphần tửtử đầuđầu tiêntiên trêntrên mảngmảng

„ SốSố thànhthành phầnphần trongtrong thamtham sốsố mảngmảng cócó thểthể đểđể trốngtrống

„ SốSố thànhthành phầnphần trongtrong thamtham sốsố mảngmảng cócó thểthể đểđể trốngtrống

„ SốSố thànhthành phầnphần thựcthực sựsự đượcđược sửsử dụngdụng phảiphải truyềntruyền quaqua mộtmột tham

tham sốsố kháckhác (vd(vd:: size)size)

tham

tham sốsố kháckhác (vd(vd:: size)size)

int add elements(int a[], int size) t add_e e e ts( t a[], t s e)

{

int add_elements(int *p, int size) {

Trang 13

Ví dụ

#include <stdio.h>

primes

void sum(long [], int);

int main(void) {

long primes[6] = { 1, 2,

2 3

3, 5, 7, 11 };

sum(primes, 6);

printf("%li\n", primes[0]);

5 7 11 return 0;

}

11 a

void sum(long a[], int sz) {

long total = 0;

dùng để kiểm tra

long total = 0;

for(i = 0; i < sz; i++)

total += a[i];

dùng để kiểm tra giới hạn chỉ số

a[0] = total;

}

tổng được lưu vào phần tử đầu tiên

Trang 14

Chú ý

Chú ý

Khô thểthể thth hiệ áá thth tá hé ộiội dd ộtột ảả

„ KhôngKhông thểthể thựcthực hiệnhiện cáccác thaothao táctác chépchép nộinội dung dung mộtmột mảngmảng

sang

sang mảngmảng kháckhác

Chép

Chép từngtừng phầnphần tửtử mảngmảng

Chép

Chép từngtừng phầnphần tửtử mảngmảng

char A[3]={‘

char A[3]={‘a’,’b’,’ca’,’b’,’c’};’};

char B[3];

B = A; // ???

for(

for(intint ii=0; =0; ii<3; <3; ii++)++)

B[

B[ii] A[] A[ii];];

B[

B[ii] = A[] = A[ii];];

hoặc

hoặc chépchép khốikhối bộbộ nhớnhớ ((sẽsẽ đượcđược đềđề cậpcập sausau))

„ KhôngKhông dùngdùng phépphép soso sánhsánh trựctrực tiếptiếp (==)(==) nộinội dungdung trongtrong haihai

„ KhôngKhông dùngdùng phépphép so so sánhsánh trựctrực tiếptiếp (==) (==) nộinội dung dung trongtrong haihai

mảng

mảng

Phép

Phép so pp so sánhsánh (A==B) so (A==B) so sánh(( )) sánh địađịa chỉịị chỉ haihai vùngvùng nhớgg nhớ màmà A A vàvà B B chỉ

chỉ đếnđến

Trang 15

Một ố th tá ở Một ố th tá ở Một số thao tác cơ sở

„ Nhập

ấấ

„ Xuất

„ ThêmThêm mộtmột thànhthành phầnphần dữdữ liệuliệu

„ LoạiLoại bỏbỏ mộtmột thànhthành phầnphần dữdữ liệuliệu

„ TìmTìm kiếmkiếm

„ TìmTìm kiếmkiếm

„ SắpSắp xếpxếp

Trang 16

Mảng Nhậ dữ liệ

Mảng

Mảng –– Nhập dữ liệu

void ReadData(int a[], int size)

{

int i; duyệt qua tất cả các int i;

for(i = 0; i < size; i++)

phần tử

o ( 0; s e; ) {

printf(“Nhap thanh phan %d: ”, i); scanf(“%d”, &a[i]);

} }

nhập dữ liệu cho a[i] ập ệ [ ]

Trang 17

Mảng X ất dữ liệ X ất dữ liệ à hì h à hì h

Mảng

Mảng –– Xuất dữ liệu ra màn hình

void WriteData(int a[], int size) {

i i int i;

for(i = 0; i < size; i++)

printf(“%d ”, a[i]);

printf(“\n”);

}

Trang 18

Mảng Nhậ Nhậ ất dữ liệ ất dữ liệ

Mảng

Mảng –– Nhập xuất dữ liệu

#include <stdio h>

void ReadData(int [], int );

void WriteData(int [], int );

void main()

{

int a[100], n;

clrscr();

printf(“Nhap so thanh phan cua day: “); scanf(“%d”, &n);

printf(“Nhap cac thanh phan cua day: “);

ReadData(a, n);

printf(“Day vua nhap: \n“);

WriteData(a, n);

}

Ngày đăng: 22/07/2014, 16:21

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm