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

Đề tài Giáo án môn Tin học 11 - Bài 11: Kiểu mảng

5 31 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Kiểu mảng
Người hướng dẫn GV: Hoàng Lê Minh
Trường học Trung Tâm KTTH – HN Ninh Sơn
Chuyên ngành Tin học
Thể loại Giáo án
Định dạng
Số trang 5
Dung lượng 129,02 KB

Nội dung

Kiểu mảng một chiều: b.Một số ví dụ: Ví dụ 1: Tìm phần tử lớn nhất của dãy số nguyên Input nhập: Số nguyên dương N Max then Begin max:=A[i]; csmax:=i; End; writeln'Gia tri lon nhat cua d[r]

Trang 1

GIÁO ÁN TIN HỌC 11

A./ MỤC TIÊU:

 Học sinh hiểu:

- Kiểu mảng là một kiểu dữ liệu có cấu trúc

- Khái niệm mảng một chiều và hai chiều

- Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu

- Thuật toán tìm kiếm, sắp xếp cơ bản

 Kỹ năng:

- Nhận biết các thành phần của mảng

- Cách khai báo mảng một chiều, mảng hai chiều

- Cách tham chiếu các phần tử của mảng

 Yêu cầu:

- Học sinh nắm vững các kiểu dữ liệu trong Pascal;

- Nắm vững các lệnh cấu trúc rẽ nhánh và lặp

B./ PHÂN TIẾT:

Tiết 1: Phần 1a

Tiết 2, 3: Phần 1b

Tiết 4: Phần 2

C./ CHUẨN BỊ:

Máy chiếu, máy vi tính

D/ KIỂM TRA BÀI CŨ:

D./ BÀI MỚI:

Tiết 1:

- GV: Hỏi hs các kiểu dữ liệu đã học

- HS: Trả lời các kiểu dữ liệu chuẩn đã

học

- GV: Các ngôn ngữ lập trình thường

cung cấp một số kiểu dữ liệu được xây

dựng từ những kiểu dữ liệu chuẩn gọi

là kiểu dữ liệu có cấu trúc

Trong đó kiểu mảng là một trong

những kiểu dữ liệu có cấu trúc

Vậy như thế nào là mảng một chiều?

GV: Đưa ra khái niệm, và cách xây

dựng kiểu mảng

HS: Quan sát, lắng nghe và ghi chép

1 Kiểu mảng một chiều:

* Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu Mảng được đặt tên và mỗi phần tử của nó

Để mô tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh số các phần tử của nó

* Để xây dựng và sử dụng kiểu mảng một chiều cần xác định:

+Tên mảng một chiều +Số lượng phần tử +Cách khai báo biến mảng +Cách tham chiếu đến phần tử

*Xét các ví dụ sau:

Ví dụ 1 (SGK trang 53-54) mô tả cách dùng cấu trúc rẽ

Trang 2

GV: Phân tích hai ví dụ trong SGK để

HS nhận thấy sự tiện lợi khi sử dụng

mảng Trong khi phân tích hai ví dụ và

đặt câu hỏi?

HS: Trả lời câu hỏi của GV, và đưa ra

ý kiến nhận xét về hai chương trình

GV: Đưa ra hai cách khái báo mảng

một chiều trong ngôn ngữ Pascal, giải

thích ý nghĩa của các từ khóa mới

Gv: Khai báo mảng bằng cách nào thì

thuận tiện hơn?

HS: Trả lời

GV: Nhận xét

GV: Đưa ra các ví dụ và gọi HS nhận

xét

HS: Quan sát và trả lời

GV: Hướng dẫn tham chiếu đến các

phần tử của mảng, và đưa ra ví dụ

Ví dụ: Cho mảng gồm 5 phần tử:

HS: Quan sát lắng nghe và trả lời

nhánh

Ví dụ 2 (SGK trang 54) mô tả cách dùng kiểu dữ liệu

mảng

a Khai báo:

Có 2 cách:

- Cách 1: Khai báo trực tiếp biến mảng một chiều:

Var <tên biến mảng>: Array[kiểu chỉ số] of <kiểu phần tử>;

- Cách 2: Khai báo gián tiếp gián tiếp biến mảng qua

kiểu mảng một chiều:

Type <tên kiểu mảng> = Array[kiểu chỉ số] of <kiểu phần tử>;

Var <tên biến mảng>: <tên kiểu mảng>;

Trong đó:

- Kiểu chỉ số là một đoạn số nguyên liên tục có dạng

n1 n với n1,n2 là các hằng hoặc các biểu thức xác định chỉ số đầu và chỉ số cuối (n1<= n2)

- Kiểu phần tử là kiểu của các phần tử mảng

* Ví dụ: Các khai báo biến sau đây là hợp lệ

- Khai báo biến mảng thông qua kiểu mảng:

Type Arrint=array[1 100] of integer;

A = array[1 n] of integer;

ArrBoolean =Array[-n+1 n+1] of Boolean;

ArrReal=array[1 max] of Real;

Var Mang1: Arrint;

Mang2: ArrReal;

Trong đó n và Max là các hằng nguyên

- Khai báo trực tiếp:

Var A: Array[1 100] of integer;

B: Array[1 10] og integer;

* Để tham chiếu đến phần tử của mảng một chiều ta cần xác định: <tên biến mảng>[chỉ số] Áa

Ví dụ: Cho mảng gồm 5 phần tử:

Giá trị của phần tử thứ 1 và thứ 4 là:

A[1]=30; A[4]=2;

E./ CỦNG CỐ:

- Cách khai báo mảng một chiều

- Cách tham chiếu phần tử của mảng

- Cách nhập dữ liệu cho mảng

F./ DẶN DÒ:

- Xem trước các ví dụ trong SGK

- Ra bài tập

Trang 3

Tiết 3-4: Bài 11: KIỂU MẢNG(tiếp theo)

A./ KIỂM TRA BÀI CŨ:

B./ BÀI MỚI:

GV: Đưa ra ví dụ

HS: Nêu thuật toán tìm phần tử

lớn nhất đã học ở lớp 10

Các bước:

B1: Nhập N và dãy A1,A2, ,AN

B2: Max A1, i2;

B3: Nếu i>n thì đưa giá trị Max

và kết thúc;

B4:

B4.1: Nếu Ai > Max thì Max

Ai

B4.2: i i+1 Quay lại B3

GV: Giải thích chương trình cho

h ọc sinh hiểu?

HS: Lắng nghe, quan sát

GV: Chương trình tìm giá trị lớn

nhất của dãy Vậy tìm giá trị nhỏ

nhất của dãy ta làm thế nào?

HS: Trả lời câu hỏi

GV: Hướng dẫn

Min := A[1]; csmin :=1;

for i:=2 to N do

If A[i] < Min then

Begin

Min:=A[i];

csmin:=i;

End;

GV: Đưa ra ví dụ

HS: Nêu thuật toán sắp xếp đã

học ở lớp 10

1 Kiểu mảng một chiều:

b.Một số ví dụ:

Ví dụ 1: Tìm phần tử lớn nhất của dãy số

nguyên Input (nhập): Số nguyên dương N(<=250) và dãy

số nguyên dương A1,A2,…AN MỗI số đều không vượt quá 500

Output(xuất): Chỉ số và giá trị lớn nhất của dãy số

đã cho

Chương trình được viết như sau:

Program Timmax;

USES Crt;

Const Nmax = 250;

Type ArrInt = array[1 Nmax] of integer;

Var N, i, Max, csmax : integer;

A: ArrInt;

BEGIN clrscr;

Write('Nhap so phan tu cua day so, N = ');

Readln(N);

for i:=1 to N do Begin

write('Phan tu thu ', i, ' =');

readln(A[i]);

end;

Max := A[1]; csmax :=1;

for i:=2 to N do

If A[i]> Max then Begin

max:=A[i];

csmax:=i;

End;

writeln('Gia tri lon nhat cua day la: ', Max);

writeln('Chi so phan tu lon nhat la: ', csmax);

readln END

Ví dụ 2: Sắp xếp dãy số nguyên bằng thật toán

tráo đổi

- Input: Số nguyên dương N và dãy số

A1, A2, …, AN

Trang 4

GV: Hướng dẫn

Đổi chỗ để đưa số lớn nhất về vị

trí cuối cùng

Làm tương tự đối với các số còn

lại

GV: Giải thích chương trình cho

h ọc sinh hiểu?

HS: Lắng nghe, quan sát

GV: Sắp xếp giảm dần thì ta thực

hiện như thế nào?

HS: Trả lời câu hỏi

GV: Hướng dẫn

GV: Đưa ra ví dụ

HS: Nêu thuật toán tìm đã học ở

lớp 10

GV: Giải thích chương trình

- Output: Dãy số A được sắp xếp theo thứ tự tăng

Chương trình:

Program Sapxep;

USES Crt;

Const Nmax = 250;

Type ArrInt = array[1 NMax] of integer;

Var N, i, j, t : integer;

A: ArrInt;

BEGIN clrscr;

Write('Nhap so phan tu cua day so, N = ');

readln(N);

For i:=1 to n do Begin

Write('Phan tu thu ', i,' = ');

Readln(A[i]);

End;

writeln('Day so da cho la: ');

For i:= 1 to N do Write(A[i]:4);

writeln;

For j:= N downto 2 do for i:= 1 to j -1 do

if A[i] > A[i+1] then Begin

t:=A[i];

A[i]:=A[i+1];

A[i+1]:=t;

End;

writeln('Day so duoc sap xep la: ');

For i:= 1 to N do Write(A[i]:4);

readln END

Ví dụ 3: Tìm kiếm nhị phân.

Input: Dãy số A1, A2, …, AN đã được sắp xếp tăng dần (N <= 250)

Output: Chỉ số i mà A[i] = hoặc thông báo

“Không tìm thấy ” Nếu không có A[i] nào của dãy bằng k

Chương trình:

Program tk_nhiphan;

Uses Crt;

Const Nmax = 250;

Type ArrInt = array[1 NMax] of integer;

Var N, i, k, t, dau, cuoi, giua : integer;

Trang 5

GV: Nếu dãy không được sắp

xếp thì chương trình tìm kiếm

nhị phân có đúng không?

HS: Trả lời

A: ArrInt;

thay: Boolean;

BEGIN clrscr;

Write('Nhap so phan tu cua day so, N = ');

readln(N);

Writeln('Nhap cac phan tu theo thu tu tang dan');

For i:=1 to n do Begin

Write('Phan tu thu ', i,' = ');

Readln(A[i]);

End;

writeln;

write('Nhap gia tri can tim , k = ');

readln(k);

dau:=1;

cuoi:=N;

thay:=false;

While (dau<=cuoi) and not (thay) do begin

giua:=(dau + cuoi) div 2;

if A[giua] = k then thay:= true else

if A[giua] > k then cuoi:= giua - 1 else dau:=giua + 1;

end;

if thay then writeln('Chi so tim duoc la', giua) else

writeln('Khong tim thay');

readln END

C./ CỦNG CỐ:

- Cách nhập và xuất dữ liệu của mảng, các thao tác với mảng

- Các lệnh về cấu trúc rẽ nhánh và lặp

D./ DẶN DÒ:

- Xem bài thực hành số 3, 4 SGK

- Ra bài tập về nhà

Ngày đăng: 01/04/2021, 22:02

TỪ KHÓA LIÊN QUAN

w