Tải bản đầy đủ (.ppt) (20 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (476.37 KB, 20 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1></div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b>Làm việc với dãy số</b>



<b>Ví dụ:</b>


Viết chương trình nhập
điểm kiểm tra của các học
sinh trong lớp.


- Nhập và lưu điểm
cho một học sinh


Write (‘Nhap diem= ‘); Readln(diem_1);


Khai báo 1 biến như sau:
Var diem_1: real;


- Nhập và lưu điểm cho 2
học sinh


Khai báo 2 biến như sau:
Var diem_1, diem_2: real;


Write (‘Diem hs 1= ‘); Readln(diem_1);
Write (‘Diem hs 2= ‘); Readln(diem_2);


<b>Dãy số và biến mảng</b>


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>Ví dụ:</b>


Viết chương trình nhập
điểm kiểm tra của các học


sinh trong lớp.


- Nhập và lưu điểm
cho một học sinh


- Nhập và lưu điểm cho 2
học sinh


<b>Nhập và lưu điểm cho</b>


<b>50 học sinh thì sao?</b>


<b>?</b>



Khai báo n biến như sau:


Var diem_1, diem_2, diem_3, diem_4, .. , diem_50: real;


Write (‘Diem hs 1= ‘); Readln(diem_1);
Write (‘Diem hs 2= ‘); Readln(diem_2);
Write (‘Diem hs 3= ‘); Readln(diem_3);
Write (‘Diem hs 4= ‘); Readln(diem_4);
……


……


Write (‘Diem hs n= ‘); Readln(diem_50);


<b>Những hạn chế:</b>



Phải khai báo quá nhiều biến.
Chương trình phải viết khá dài.

<b>Làm việc với dãy số</b>



<b>Dãy số và biến mảng</b>


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<b>Làm việc với dãy số</b>



Em hiểu thế nào là dữ
liệu kiểu mảng ?


<b>?</b>

Dữ liệu kiểu mảng: Là một tập hợp hữu hạn các <sub>phần tử</sub> <i><sub>có thứ tự, mọi phần tử đều có cùng kiểu dữ </sub></i>


<i>liệu (số nguyên hoặc số thực). Việc sắp thứ tự thực </i>


hiện bằng cách gán cho mỗi phần tử một chỉ số. (số
nguyên).


Vậy em hiểu biến
mảng là gì?


<b>?</b>

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


kiểu mảng, biến đó được gọi là biến mảng.


Giá trị của biến mảng là một mảng, tức một dãy số
(số nguyên, hoặc số thực).


<b>Vậy:</b>



<b>Khắc phục những hạn chế: </b>


- Ghép chung các biến trên thành một dãy.


- Đặt chung một tên và đặt cho mỗi phần tử một chỉ số.


<b>Dãy số và biến mảng</b>


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>Làm việc với dãy số</b>



<b>Dãy số và biến mảng</b>


<b>31</b>



Ví dụ

:

<sub>A</sub>


i <sub>1</sub> <sub>2</sub> <sub>3</sub> <sub>4</sub> <sub>5</sub> <sub>6</sub>


8 12 5 9 17 3


<b>Trong đó:</b>


 Tên mảng:


 Chỉ số:


 Số phần tử của mảng:


 Kiểu dữ liệu của các phần tử:



 Khi tham chiếu đến phần tử thứ i, ta viết A[i]
Ví dụ: A[5]=


A
i


6


Kiểu số nguyên


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b>Làm việc với dãy số</b>



<b>Ví dụ về biến mảng</b>


<b>2</b>

<b><sub>a) Cách khai báo mảng trong Pascal:</sub></b>



<i>Ví dụ1: Cách khai báo đơn giản một biến </i>


<i>mảng trong ngôn ngữ Pascal như sau:</i>



Tên biến

Số lượng pt

Kiểu dữ liệu



chung



Chỉ số đầu

Chỉ số cuối



<b>var Chieucao: array[1..50] of real;</b>



<b>Số phần tử của mảng = chỉ số cuối – chỉ số đầu + 1.</b>


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<b>Làm việc với dãy số</b>




<b>Ví dụ về biến mảng</b>


<b>2</b>



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


Var <tên biến mảng>: array<i>[<chỉ số đầu>..<chỉ số cuối>] </i>


of<i> <kiểu dữ liệu>;</i>


<b>Cách khai báo mảng </b>
<b>trong pascal?</b>


<b>Trong đó: </b>


 <sub>Array, of </sub><sub>là từ khóa của chương trình.</sub>


 <sub>Tên biến mảng do người dùng đặt.</sub>


 <sub>Chỉ số đầu phải <= chỉ số cuối. (Số nguyên)</sub>


 <b><sub>Giữa hai chỉ số là dấu ..</sub></b>


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<b>Làm việc với dãy số</b>



<b>Ví dụ về biến mảng</b>


<b>2</b>

<b><sub>a) Cách khai báo mảng trong Pascal:</sub></b>




<b>Hãy khai báo các mảng </b>
<b>sau:</b>


Var diem : array[1..40] of real;



Var diem : array[1..40] of real;



Var A: array[1..10] of integer;


B: array[1..10] of integer;



Var A: array[1..10] of integer;



B: array[1..10] of integer;



Var A ,B: array[1..10] of integer;




Var A ,B: array[1..10] of integer;




<b>2/ Mảng A, B gồm 10 </b>


phần tử thuộc kiểu dữ


liệu số nguyên?



<b> 1/ Mảng Diem </b>


gồm 40 phần tử


thuộc kiểu dữ liệu



</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b>Làm việc với dãy số</b>




<b>Ví dụ về biến mảng</b>


<b>2</b>

<b><sub>a) Cách khai báo mảng trong Pascal:</sub></b>



<b>BT2/79: </b>

Các khai


báo biến mảng sau


trong Pascal đúng


hay sai?



<b>BT2/79:</b>

Các khai


báo biến mảng sau


trong Pascal đúng


hay sai?



A. Var X : Array[10,13] of Integer;


A. Var X : Array[10,13] of Integer;


B. Var X : Array[5..10.5] of Real;


B. Var X : Array[5..10.5] of Real;



<b>BT 4 /79: Câu lệnh </b>



khai báo biến mảng


sau đây máy tính có


thực hiện được



không?



<b>BT 4 /79: Câu lệnh </b>


khai báo biến mảng



sau đây máy tính có


thực hiện được



khơng?



Var N : integer;


Var N : integer;



A : array[1..N] of real;


A : array[1..N] of real;



<b>Khơng xác định</b>



<b>Khơng xác định</b>



KHƠNG



<i><b>Lưu ý:</b></i>



- Số phần tử của mảng = chỉ số cuối – chỉ số đầu + 1



</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<b>Làm việc với dãy số</b>



<b>Ví dụ về biến mảng</b>


<b>2</b>

<b><sub>b) Truy cập đến giá trị phần tử trong mảng:</sub></b>



Tên mảng [Chỉ số]



Tên mảng [Chỉ số]




<b>Cú pháp:</b>



<b>Ví dụ1</b>

<b>:</b>



2

5

7

1

10



3 4 5 6 7



<b>Cho mảng A chứa các giá trị sau:</b>



<b>Hãy xác định: </b>


<b>A[1], A[3], </b>


<b>A[5], </b>



<b>A[10] ?</b>



</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<b>Làm việc với dãy số</b>



<b>Ví dụ về biến mảng</b>


<b>2</b>

<b><sub>b) Truy cập đến giá trị phần tử trong mảng:</sub></b>



Tên mảng [Chỉ số]



Tên mảng [Chỉ số]



<b>Cú pháp:</b>



<b>Ví dụ2</b>

<b>:</b>




A[3]:=2;


A[4]:=5;



A[6]:=A[3]+A[4];



Cho các câu lệnh sau:



A[3]=2;



A[4]=5;



A[6]=7



Giá trị của các


phần A[3], A[4],


A[6] sẽ là bao


nhiêu?



- Có thể gán giá trị, đọc giá trị và thực hiện tính tốn với các


phần tử trong mảng



</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

<b>Làm việc với dãy số</b>



<b>Ví dụ về biến mảng</b>


<b>2</b>



c) Lệnh nhập giá trị cho biến mảng:




c) Lệnh nhập giá trị cho biến mảng:



- Sử dụng lệnh Read (Readln) kết hợp với For ... do.



<b>Tiếp ví dụ 1 SGK/75. Viết chương trình nhập điểm kiểm tra của các </b>


học sinh trong 1 lớp và in ra điểm cao nhất?



<b>- Yêu cầu 1: Thực hiện việc </b>khai báo<b> các biến diem_1, diem_2,</b>
<b>…,diem_50 </b>bằng biến mảng?


<b>Var</b>


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<b>Làm việc với dãy số</b>



<b>Ví dụ về biến mảng</b>


<b>2</b>



c) Lệnh nhập giá trị cho biến mảng:



c) Lệnh nhập giá trị cho biến mảng:



<b>- Yêu cầu 2: Viết chương trình </b>nhập điểm cho 50 học sinh ?


Write (‘Diem hs 1= ‘); Readln(diem_1);
Write (‘Diem hs 2= ‘); Readln(diem_2);
Write (‘Diem hs 3= ‘); Readln(diem_3);
Write (‘Diem hs 4= ‘); Readln(diem_4);
……



……


Write (‘Diem hs n= ‘); Readln(diem_50);


For i:=1 to 50 do



<b>Begin</b>



write(‘nhap diem hs’,i,’:’);



readln(diem[i]);



<b>End;</b>



- Sử dụng lệnh Read (Readln) kết hợp với For ... do.



<b>Vậy cách khai báo và sử </b>
<b>dụng biến mảng có lợi </b>


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<b>Làm việc với dãy số</b>



<b>Ví dụ về biến mảng</b>


<b>2</b>



d. Xuất giá trị của mảng ra màn hình:



d. Xuất giá trị của mảng ra màn hình:



Sử dụng lệnh Write (Writeln) kết hợp với For ... do.




Max:=diem_1;


If diem_1<diem_2 then max:=diem_2;
If diem_2<diem_3 then max:=diem_3;
……….


If diem_49<diem_50 then ax:=diem_50;


Writeln(‘diem cao nhat la:',max:2:1);


Max:=diem[1];


For i:=2 to 50 do


if diem [i]>Max then Max:=diem[i];


Writeln(diem cao nhat la:‘ , max:2:1);
<b>- Yêu cầu 3: So sánh điểm của học sinh và in ra màn hình điểm cao </b>


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

<b>Làm việc với dãy số</b>



<b>Tìm giá trị lớn nhất</b>
<b> và nhỏ nhất.</b>


<b>3</b>



Bài tốn:

Viết chương trình nhập điểm thi học kì môn Tin học của một lớp gồm


N học sinh. In ra màn hình điểm thi cao nhất và thấp nhất.




Input:



Output:



<i><b>Hãy nêu ý </b></i>
<i><b>tưởng tìm số </b></i>
<i><b>lớn nhất và nhỏ </b></i>


<i><b>nhất của dãy </b></i>
<i><b>số</b></i>


Dãy số A gồm điểm của N học sinh


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

Số này lớn


nhất



Số này mới



lớn nhất

ồ! Số này


lớn hơn


Tìm ra số


lớn nhất rồi!



THUẬT TỐN TÌM MAX



<b>MAX</b>


<b>4.5</b>

<b>6.0</b>



</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

<b>* Đoạn chương trình</b>




<b> Max:=A[1];</b>



<b> </b>

<b>For i:=2 to N do IF A[i] > Max Then Max:=A[i];</b>


<b>Ý TƯỞNG TÌM MAX:</b>



<b>- Đặt giá trị của max=A[1].</b>



- Lần lượt cho i chạy từ 2 đến n, so sánh giá trị A[2] với giá trị của max,


<b>nếu A[2]>max thì max nhận giá trị mới là A[2].</b>



<b>Tương tự ta tìm min bằng cách:</b>


<b>- Đặt giá trị của min=A[1].</b>



- Lần lượt cho i chạy từ 2 đến n, so sánh giá trị A[2] với


<b>giá trị của min, nếu A[2]<min thì min nhận giá trị mới </b>


<b>là A[2].</b>



<b>Làm việc với dãy số</b>



<b>Tìm giá trị lớn nhất và nhỏ nhất.</b>


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

<b>Program vd1;</b>


<b>Uses crt;</b>


<b>Var</b>


<b>A: Array[1..100] of real;</b>
<b>i,n: integer;</b>



<b>Max,min: real;</b>


<b>BEGIN</b>


<b>Clrscr;</b>


<b>write(‘ Nhap vao so học sinh : ’) ;</b>
<b>readln(n) ;</b>


<b>For i := 1 to n do </b>
<b>Begin</b>


<b> write(‘ Nhap diem Hs thu ‘,i,’ : ‘) ;</b>
<b> readln(A[i]) ;</b>


<b>End;</b>


<b>Max:=A[1];</b>


<b> For i := 2 to n do </b>


<b>If A[i]>Max Then Max := A[i];</b>


<b> Writeln(‘ Diem lon nhat la ', Max:5:1) ;</b>
<b> Min:=A[1];</b>


<b> For i := 2 to n do </b>


<b>If A[i]<Min Then Min := A[i];</b>



<b> Writeln(‘ Diem nho nhat la ', Min:5:1) ;</b>
<b> Readln </b>


<b>END.</b>


<i><b>Khai báo biến mảng</b></i>



<i><b>Nhập vào biến mảng</b></i>



</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

<b>Nhap vao so hoc sinh :</b>

<b>7</b>


<b>Nhap diem hs thu 1 : </b>

<b>7.0</b>


<b>Nhap diem hs thu 2 : </b>

<b>9.0</b>


<b>Nhap diem hs thu 3 : </b>

<b>4.5</b>


<b>Nhap diem hs thu 4 : </b>

<b>6.0</b>


<b>Nhap diem hs thu 5 : </b>

<b>9.5</b>


<b>Nhap diem hs thu 6 : </b>

<b>8.0</b>


<b>Nhap diem hs thu 7 : </b>

<b>5.5</b>


<b>Diem lon nhat la 9.5</b>



<b>Diem nho nhat la 4.5</b>




</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20></div>

<!--links-->

×