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

làm việc với dãy số

4 1,1K 16
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Làm việc với dãy số
Trường học Trường THCS Nguyễn Trãi
Chuyên ngành Tin học
Thể loại Giáo án
Định dạng
Số trang 4
Dung lượng 170 KB

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

Nội dung

Mục tiêu: - Học sinh biết được khái niệm mảng một chiều; - Biết cách khai báo mảng, nhập, in, truy cập các phần tử của mảng; - Hiểu thuật toán tìm số lớn nhất, nhỏ nhất của một dãy số..

Trang 1

TIẾT 56, 57: LÀM VIỆC VỚI DÃY SỐ

I Mục tiêu:

- Học sinh biết được khái niệm mảng một chiều;

- Biết cách khai báo mảng, nhập, in, truy cập các phần tử của mảng;

- Hiểu thuật toán tìm số lớn nhất, nhỏ nhất của một dãy số

II Phương pháp:

- Đặt vấn đề để học sinh trao đổi và đưa nhận xét Tận dụng vốn hiểu biết “ một cách

tự nhiên của học sinh

- Học sinh đọc SGK, quan sát và tổng kết

III Chuẩn bị:

- Giáo viên: Phấn màu, sách, chuẩn bị thêm các bài tập minh hoạ (nếu có)

- Học sinh: sách, tập, viết

IV TIẾN TRÌNH DẠY HỌC

1- Kiểm tra bài cũ: … 2- Dạy bài mới:

Hoạt động 1:Dãy số và biến mảng

- Giới thiệu về dãy số và biến mảng

liên quan đến hai nội dung quan

trọng: Nhu cầu của biến mảng trong

ngôn ngữ lập trình và thuật toán tìm

số lớn nhất của một dãy số.

Như các em đã biết về “thuật toán

tìm số lớn nhất của một dãy số” đã

được tìm hiểu ở bài 5 (ví dụ 6) Vì

vậy, ta không đề cập đến việc giải

quyết nhiệm vụ này ntn

Mục tiêu là Gv dẫn đến nhu cầu cần

có biến mảng thông qua ví dụ 1: Viết

chương trình nhập điểm kiểm tra của

các HS trong một lớp và sau đó in ra

màn hình.

+ Vì mỗi biến chỉ có thể lưu một giá

trị duy nhất, để có thể nhập điểm và

so sánh chúng, ta cần sử dụng nhiều

biến, mỗi biến cho một HS Trong

Pascal ta cần nhiều câu lệnh khai báo

và nhập dữ liệu như: Mỗi câu lệnh

tương ứng với điểm của một HS

+ Nếu số HS trong lớp càng nhiều

thì đoạn khai báo và đọc dữ liệu trong

chương trình càng dài … rất khó

tránh khỏi những nhầm lẫn, sai sót

- Vậy, ta có thể sử dụng quy luật tăng

hay giảm của “số thứ tự” và một vài

HS nghe giảng

- HS đọc ví dụ 1

- HS lắng nghe, theo dõi, ghi vở

1 Dãy số và biến mảng:

Ví dụ 1: (SGK)/ Tr 75

- Khai báo và nhập dữ liệu mỗi câu lệnh tương ứng với điểm của một HS:

Var Diem_1, Diem_2, Diem_3, … : real;

Read (Diem_1) ; Read (Diem_2) ; Read (Diem_3) ; …

Trang 2

câu lệnh lặp để xử lí dữ liệu một cách

đơn giản ntn ?

 Để giải quyết các vấn đề trên, hầu

hết các ngôn ngữ lập trình đều có một

kiểu dữ liệu được gọi là kiểu mảng.

+ Dữ liệu kiểu mảng là gì ?

* Nhấn mạnh: Trong bài này, ta chỉ

xét các mảng có các phần tử kiểu số

nguyên hoặc số thực

- HS trả lời …

- Ta có thể sử dụng quy luật tăng hay giảm của “số thứ tự” và một vài câu lệnh lặp để xử

lí dữ liệu một cách đơn giản:

+ Với i = 1 đến 100: Hãy nhập Diem_i; + Với i = 1 đến 100: Hãy so sánh Max với

Diem_i;

* Dữ liệu kiểu mảng:Là một tập hợp hữu

hạn các phần tử có thứ tự + Mọi phần tử đều có cùng một kiểu dữ liệu gọi là kiểu của phần tử.

Việc sắp xếp thứ tự thực hiện bằng cách

gán cho mỗi phần tử một chỉ số:

+ Biến mảng: Là khi khai báo một biến có kiểu dữ liệu là kiểu mảng

+ Giá trị của biến mảng là một mảng (tức là một dãy số: nguyên - thực có thứ tự)

Hoạt động 2:Ví dụ về biến mảng

- Cách khai báo biến mảng trong các

ngôn ngữ lập trình có thể khác nhau,

nhưng luôn cần chỉ rõ những gì ?

- Cho HS đọc ví dụ, rồi hướng dẫn

cách khai báo trong ngôn ngữ Pascal:

Var Chieucao : array [1 50] of real;

Var Tuoi : array [21 80] of integer;

=> Cách khai báo mảng trong Pascal

ntn ?

- Từ ví dụ 1, GV dẫn dắt HS cách

khai báo biến mảng:

Var Diem : array [1 50] of real;

+ Biến mảng có 50 phần tử được

đánh từ 1 đến 50 Các phần tử được

“đặt tên” ntn ?

=> Cách khai báo và sử dụng biến

mảng như trên có lợi gì ?

- HS lắng nghe trả lời…

- HS nêu cách khai báo …

- HS theo dõi lắng nghe trả lời:

+ Tên biến mảng [chỉ số phần tử]

như Diem[1],…

+ Có thể thực hiện các thao tác như gán giá trị, so sánh, viết giá trị

2 Ví dụ về biến mảng:

- Cách khai báo biến mảng trong các ngôn ngữ lập trình có thể khác nhau, nhưng luôn

cần chỉ rõ: tên biến mảng, số lượng phần tử,

kiểu dữ liệu chung của các phần tử.

Ví dụ: (SGK)/ Tr 76

* Cách khai báo mảng trong Pascal:

Tên mảng : array [<chỉ số đầu> <chỉ số cuối>] of <kiểu dữ liệu >;

Trong đó:

+ Chỉ số đầu và chỉ số cuối: là 2 số nguyên hoặc biểu thức nguyên (Chỉ số đầu chỉ số cuối );

+ Kiểu dữ liệu: integer hoặc real

* Ví dụ 2: (SGK)/ Tr 76.

- Khai báo biến mảng Diem như sau:

Var Diem : array [1 50] of real;

Trang 3

- Để thay rất nhiều câu lệnh nhập và

in dữ liệu ra màn hình, ta dùng một

câu lệnh nào ?

( For …do )

- Để viết giá trị của các phần tử ra

màn hình người ta kết hợp giữa For

…do với lệnh nào ?

- Để giúp tiết kiệm rất nhiều thời gian

và công sức viết chương trình, thay vì

phải viết 50 câu lệnh khai báo và 50

câu lệnh nhập, ta chỉ cần viết 2 câu

lệnh là đủ và kết quả đạt được như

nhau Đưa ra 1 cách khai báo cho HS

=> HS tự khai báo nhiều biến mảng

cho các môn học ntn ?

- Sau khi một mảng đã được khai báo,

chúng ta có thể làm việc với các phần

tử của nó như làm việc với một biến

thông thường Vậy làm việc với một

biến thông thường ntn ?

* Lưu ý HS: Sử dụng cấu trúc For

… do phù hợp, dễ hiểu hơn cấu trúc

While…do vì biết trước số lần lặp.

* Củng cố:Làm BT 1, 2/ SGK/ Tr 79

* Dặn dò: Học Bài và làmBTVN: 3,

4/SGK/ Tr 79.

ra màn hình …

với Diem[1],

Diem[2], …, Diem[50],

- Dùng một câu

lệnh lặp

- … với lệnh write

hoặc writeln

- HS nghe và theo

dõi Gv thực hiện

- HS làm theo hdẫn của GV

- … như gán giá trị, đọc giá trị và thực hiện các tính toán với các giá trị đó

- Dùng một câu lệnh lặp, có thể thay rất

nhiều câu lệnh nhập và in dữ liệu ra màn hình, như:

For i:= 1 to 50 do readln ( Diem [ i ] );

- Để so sánh điểm của mỗi HS với một giá trị nào đó, ta cũng chỉ cần một câu lệnh lặp, như:

For i:= 1 to 50 do

If Diem [ i ] > 8.0 then writeln ( ‘ Gioi ‘ );

- Để xử lí đồng thời các laọi điểm của từng môn học, ta có thể khai báo nhiều mảng:

Var DiemToan : array [1 50] of real;

Var DiemVan : array [1 50] of real;

Var DiemLi : array [1 50] of real;

hoặc:

Var DiemToan, DiemVan, DiemLi : array [1 50] of real;

- Khi một mảng đã được khai báo, chúng ta

có thể làm việc với các phần tử của nó như:

gán giá trị, đọc giá trị và thực hiện các tính toán với các giá trị đó Ví dụ như:

A[ 1 ]:= 5;

A[ 2 ]:= 8;

hoặc nhập dữ liệu từ bàn phím bằng câu

lệnh: For i:= 1 to 5 do readln ( A [ i ] );

-TIẾT 57(tt): Hoạt động 3: Tìm giá trị lớn nhất và nhỏ nhất của dãy số

- GV hướng dẫn HS tìm hiểu lại thuật

toán tìm giá trị lớn nhất, nhỏ nhất của

dãy số nguyên ( đã học ở Bài 5 )

+ GV giải thích về thuật toán tìm giá

trị lớn nhất của dãy số nguyên … Sau

đó cho HS nhắc lại

+ Cho HS thảo luận, chỉnh sửa thuật

- HS nghe và nhắc lại Tham gia chỉnh sửa thuật toán trên để tìm ra

3 Tìm giá trị lớn nhất và nhỏ nhất của dãy số:

* Thuật toán tìm giá trị lớn nhất ( Max ) của dãy số nguyên nhập từ bàn phím:

Bước 1: Nhập N và dãy A1, … , An;

Bước 2: Max A1;

Bước 3: Với i từ 2 đến N thực hiện: Nếu

Trang 4

toán trên để tìm ra số nhỏ nhất.

- GV cho HS đọc ví dụ 3:

+ Để nhập các số nguyên sẽ được

nhập vào, trước hết ta phải làm gì ?

+ Sau khi khai báo N, biến lưu các số

được nhập vào như là các phần tử của

một biến mảng A Ngoài ra, cần khai

báo thêm các biến nào nữa ?

- GV: Trình bày phần khai báo

chương trình …

- GV cho HS đọc phần ghi nhớ

số nhỏ nhất

- HS đọc ví dụ 3

+ HS: …trước hết

ta khai báo biến N

+ Cần khai báo

thêm biến i làm

biến đếm cho các lệnh lặp, biến

Max và Min để

lưu số lớn nhất, nhỏ nhất

- HS theo dõi

- 4HS đọc và cả lớp nghe đọc, cùng theo dõi

Max < A1 thì Max Ai;

Bước 4: Đưa ra màn hình giá trị Max rồi

kết thúc

Ví dụ 3: (SGK)/ Tr 78.

* Phần khai báo chương trình có thể như sau:

Program MaxMin;

Uses crt;

Var i, n, Max, Min : integer;

A : array [1 100] of integer;

{Phần thân chương trình sẽ tương tự dưới đây:}

Begin

Clrscr;

Write ( ‘ Hay nhap do dai cua day so, N

= ‘); readln (n);

Writeln ( Nhap cac phan tu cua day so: m’);

For i:= 1 to n do

Begin Write ( ‘ a[ , i , ] = ‘); readln (a[ i ] );

End;

Max:= a[1]; Min:= a[1];

For i:= 2 to n do Begin if Max < a[ i ] then Max:=

a[ i ];

if Min < a[ i ] then Min:= a[

i ];

End;

Write ( ‘ So lon nhat la Max = ‘ Max); Write ( ‘ So nho nhat la Min = ‘ Min); readln (n);

End

** GHI NHỚ: (SGK)/ Tr 79.

3- Dặn dò: - Về nhà học bài;

- Làm các Câu hỏi và BTcòn lại: sgk/ Tr 79;

- Chuẩn bị tiết sau: Bài thực hành 7.

The end

Ngày đăng: 01/07/2013, 01:25

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w