Pascal - Chương I: Các thành phần của ngôn ngữ lập trình pascal

Bộ chữ viết trong ngôn ngữ Pascal gồm:

 Các chữ cái in hoa và in thường của bảng chữ cái tiếng Anh: A, B, C Z.

 a, b, c, z

 Bộ chữ số Ả rập: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

 Các ký hiệu đặc biệt: . , : ; [ ] ? % @ \ | ! # $ { }

 Các ký hiệu toán học: +, -, *, /, =, <, >, (, )

 Dấu gạch dưới _ (đánh vào bằng cách kết hợp phím Shift với dấu trừ).

 Dấu khoảng cách (Space).

 

doc25 trang | Chia sẻ: Mr Hưng | Lượt xem: 765 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Pascal - Chương I: Các thành phần của ngôn ngữ lập trình pascal, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
. + Tăng giá trị của biến đếm lên 1 đơn vị (biến đếm:=biến đếm + 1) + Quay trở lại bước 2 - Cho giá trị sai câu lệnh sẽ bị bỏ qua. + Dạng lùi: Bước 1. Biến đếm nhận giá trị cuối. Bước 2. Kiểm tra xem giá trị của biến đếm còn lớn hơn giá trị đầu hay không Bước 3. Nếu việc kiểm tra: - Cho giá trị đúng: + Thực hiện câu lệnh sau từ khóa do. + Giảm giá trị của biến đếm xuống 1 đơn vị (biến đếm:=biến đếm - 1) + Quay trở lại bước 2 - Cho giá trị sai câu lệnh sẽ bị bỏ qua. - Chú ý: Câu lệnh sau từ khóa do được thực hiện lặp đi lặp lại nhiều lần, sau mỗi vòng lặp, không cần câu lệnh gán biến đếm:=biến đếm+1 mà biến đếm vẫn được tự động tăng giá trị lên 1 đơn vị. Số vòng lặp là biết trước và bằng: giá trị cuối – giá trị đầu + 1 * Ví dụ 1: Tính tổng Thuật toán: Bước 1: S ß 0, i ß 0. Bước 2: i ß i+1. Bước 3: Nếu i≤ n, thì S ß S + 1/i và quay lại bước 2 Bước 4: Thông báo kết quả và kết thúc thuật toán. Chương trình: Sử dụng vòng lặp For .. do Var i, n: Integer; S: real; Begin Write('Nhap so nguyen n='); Readln(n); S:=0; For i:=1 to n do S:= S + 1/ i; Writeln( ' Tong S =', S ); Readln; End. 2. Lặp với số lần chưa biết trước và câu lệnh lặp While...do - Tác dụng: Dùng để xây dựng chu trình với số lần lặp chưa xác định (chưa biết trước). - Cú pháp: While do ; Trong đó: + while, do là các từ khóa. + Điều kiện: là biểu thức logic - trả về 1 trong 2 giá trị đúng hoặc sai. (thường là một phép so sánh) + Câu lệnh : có thể là câu lệnh đơn hoặc câu lệnh ghép. - Nguyên lý hoạt động câu lệnh lặp While...do: Bước 1: Kiểm tra điều kiện. Bước 2: Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1. Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc. - Nhận xét: + Chương trình sẽ kiểm tra điều kiện, nếu điều kiện đúng thì thực hiện câu lệnh, sau đó quay lại kiểm tra điều kiện. Cứ tiếp tục như thế cho tới khi nào điều kiện sai thì kết thúc. + Câu lệnh được thực hiện lặp đi lặp lại cho đến khi nhận giá trị sai. Câu lệnh sẽ không được thực hiện lần nào nếu nhận giá trị sai ngay từ khi bắt đầu vào chương trình. + Trong thân chương trình phải có câu lệnh làm thay đổi giá trị của để tránh xảy ra vòng lặp vô tận. Ví dụ: Chương trình sau đây sẽ lặp lại vô hạn Var a: integer; Begin a:=5; While a<6 do writeln (‘a’); End. Trong chương trình trên, giá trị của biến a luôn bằng 5, điều kiện a<6 luôn đúng nên câu lệnh writeln (‘a’); thực hiện lặp lại mãi không dừng (rơi vào vòng lặp vô tận). + Muốn thoát khỏi vòng lập vô tận trong Pascal ta nhấn tổ hợp phím Ctrl+break (nút có chữ pause) * Ví dụ: Tính tổng Nhận xét: Đối với bài toán này thì có thể sử dụng câu lệnh lặp For .. do và While..do Chương trình: Sử dụng vòng lặp While .. do Var i, n: Integer; S: real; Begin Write('Nhap so nguyen n='); Readln(n); S:=0; i:= 0; While i< n do Begin i:=i+1; S:= S + 1/i; End; Writeln( ' Tong S =', S ); Readln; End. *Sự khác biệt giữa câu lệnh lặp với số lần lặp biết trước (For..do)và câu lệnh lặp với số lần lặp chưa biết trước (While..do) - Câu lệnh lặp For..do chỉ thị cho máy tính thực hiện một lệnh hoặc một nhóm lệnh với số lần đã được xác định từ trước, còn với câu lệnh lặp While..do thì số lần lặp chưa được xác định trước. - Trong câu lệnh lặp For..do câu lệnh chắc chắn được thực hiện ít nhất một lần, sau đó mới kiểm tra điều kiện. Còn trong câu lệnh lặp While..do trước hết điều kiện được kiểm tra, nếu điều kiện được thoả mãn câu lệnh mới được thực hiện. Do đó có thể có trường hợp câu lệnh trong vòng lặp While hoàn toàn không được thực hiện. * Ví dụ: Nhập vào n số thực, tìm giá trị lớn nhất (Max) trong các số đó Thuật toán tìm Max trong một dãy số: - Giả sử Max=1 - Duyệt toàn bộ dãy số, nếu thấy số nào lớn hơn Max thì lấy số đó làm Max. Sau khi duyệt xong dãy số, ta sẽ có Max là số lớn nhất. Nhận xét: Dãy số có một số lượng hữu hạn các số. Đối với bài toán này thì chúng ta có thể sử dụng hai câu lệnh For..do hoặc While..do Viết chương trình sử dụng lệnh For..do thì câu lệnh ngắn gọn và dễ hiểu hơn vì không cần lệnh tăng giá trị của biến đếm, nên sử dụng cấu trúc FOR..TO..DO để thực hiện. * Chương trình: Sử dụng vòng lặp For .. do Program tim_max; Uses crt; Var n,i:integer; max,x:real; Begin clrscr; write('N=');readln(n); max:=1; for i:=1 to n do begin write('Nhap so thu',i,':'); readln(x); if Max<x then max:=x; end; writeln('Max=',max:8:2); readln; End. * Chương trình: Sử dụng vòng lặp While .. do Program tim_max; Uses crt; Var n,i:integer; max,x:real; Begin clrscr; write('N='); readln(n); max:=1;i:=1; while i<n do begin write('Nhap so thu',i,':');readln(x); if Max<x then max:=x; i:=i+1; end; writeln('Max=',max:8:2); readln; End. CHƯƠNG IV: KIỂU MẢNG Khái niệm mảng Để biểu diễn một dãy số gồm n số: a1, a2,a3,...,an. Thay vì dùng n biến số, ta có thể dùng một biến có kiểu mảng. Mảng thuộc kiểu dữ liệu có cấu trúc. KN: Mảng là một dãy hữu hạn các phần tử có cùng kiểu dữ liệu. Biến mảng muốn sử dụng trong chương trình phải đặt tên và khai báo. Các phần tử trong mảng được sắp thứ tự, mỗi phần tử có một chỉ số (vị trí của phần tử trong mảng). Việc truy cập (tham chiếu) đến mỗi phần tử của mảng được xác định bởi: tên mảng và chỉ số tương ứng của phần tử này (Ví dụ: a[1]) hoặc (Ví dụ: a[i]) Khai báo biến mảng 1 chiều Cú pháp: Var :array [..] of ; Trong đó: + Var, array, of: là từ khóa. + tên biến mảng: do người lập trình tự đặt (Theo quy tắc đặt tên – giống tên biến thông thường). + chỉ số đầu, chỉ số cuối: là hai số nguyên, chỉ số đầu phải < chỉ số cuối. + kiểu dữ liệu: là kiểu dữ liệu chung của các phần tử. (Thường là kiểu số: byte, integer, longint, real). - Ví dụ1: để khai báo 100 phần tử kiểu số nguyên ta khai báo như sau: Var a: array [1..100] of integer; - Ví dụ 2: khai báo 300 phần tử kiểu số thực ta khai báo như sau: Var a: array [1..300] of real; Hoặc Var a: array [-100..200] of real; cũng là các khai báo hợp lệ Hoặc Var a: array [-300..0] of real; 3.Tham chiếu đến phần tử của mảng * Có thể thao tác (gán giá trị, nhập giá trị (readln), xuất giá trị (writeln),...) với mỗi phần tử của biến mảng như làm việc với một biến thông thường. * Tham chiếu tới phần thử của mảng được xác định bởi: - Tên mảng Tên biến mảng[Chỉ số] - Chỉ số ( xác định vị trí của phần tử trong mảng) được viết trong cặp [ ] Ví dụ 1: mảng a gồm 100 phần tử: a1, a2,..,a100; muốn tham chiếu tới phần tử thứ 10 trong mảng ta viết như sau: a[10] Ví dụ 2: mảng a gồm 30 phần tử được khai báo như sau: Var a: array [-10..20] of real Muốn tham chiếu tới phần tử thứ 15 trong mảng ta viết như sau: a[5] 4.Xử lý dãy số Các thao tác xử lý mảng (dãy số) thường gặp như: Nhập giá trị cho các phần tử của mảng Duyệt các phần tử của mảng để kiểm tra, tính toán In giá trị của một số hoặc tất cả các phần tử của mảng thỏa mãn một yêu cầu nào đó Ví dụ: Nhập vào dãy gồm n số nguyên, tìm phần tử lớn nhất trong dãy (max), in ra màn hình giá trị của max và vị trí xuất hiện của max trong dãy. (Đề bài có thể ngắn gọn: Tìm phần tử lớn nhất của dãy số nguyên) * Xác định bài toán - In put: số nguyên dương n (n là số lượng phần tử của dãy) và dãy gồm n số nguyên a1, a2,..an (an là giá trị của phần tử) - Out put: max (phần tử lớn nhất trong dãy số), vtmax (Vị trí xuất hiện của max trong dãy) * Ý tưởng - Khởi tạo max: = a[1]; - Chỉ số i nhận giá trị từ 2 đến n. Lần lượt so sánh giá trị a[i] với max(So sánh từ phần tử thứ hai). Nếu gặp phần tử a[i] thỏa mãn a[i]>max thì gán max:=a[i] (max nhận giá trị mới là a[i]) * Thuật toán: - Bước 1: Nhập số nguyên dương n và dãy a1, a2,..an - Bước 2: max<- a1, i<- 2; - Bước 3: Nếu i>n thì đưa ra max, kết thúc thuật toán - Bước 4: + Bước 4.1: Nếu ai >max thì max<-ai + Bước 4.2: i<-i+1, rồi quay lại bước 3 * Chương trình: Program timmax; Uses crt; Var n,i,max,vtmax: integer; a:array[1..100] of integer; Begin Clrscr; Write (‘Nhap so luong phan tu cua day n= ’); readln(n); For i:=1 to n do Begin Write (‘Phan tư thu’,i, ‘=’); Readln (a[i]); End; Max:=a[1]; Vtmax:=1; For i:=2 to n do If a[i] > max then Begin Max:=a[i]; Vtmax:=i; End; Writeln(‘Phan tu lon nhat trong day la max = ’,max); Writeln(‘Vị tri max xuat hien trong day la:’,vtmax); Readln End.

Các file đính kèm theo tài liệu này:

  • doctai_lieu_on_thi_hoc_sinh_gioi_tin_hoc_thcs_8999.doc
Tài liệu liên quan