Cấu trúc chung của một chương trình Pascal - Phần khai báo + Khai báo tên chương trình; + Khai báo các thư viện chứa các lệnh viết sẵn có thể sử dụng trong chương trình và một số khai
Trang 1Bài 1: MỘT SỐ KHÁI NIỆM CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH TURBO PASCAL
I MỤC TIÊU: HS nắm được một số khái niệm cơ bản về ngôn ngữ lập trình PC
II TIẾN TRÌNH BÀI DẠY
GV giới thiệu 1 Các tập tin cần thiết khi lập trình với Turbo Pascal
Để lập trình được với Turbo Pascal, tối thiểu cần 2 file
sau:TURBO.EXE: Dùng để soạn thảo và dịch chương trình TURBO.TPL: Thư viện chứa các đơn vị chuẩn để chạy
với TURBO.EXE.
Ngoài ra, muốn lập trình đồ hoạ thì phải cần thêm các tập
tin:GRAPH.TPU: Thư viện đồ hoạ.
*.BGI: Các file điều khiển các loại màn hình tương ứng khi
dùng đồ hoạ.
*.CHR: Các file chứa các font chữ đồ họa.
? Hãy nêu các bước cơ bản khi
lập trình 1 ch trình PC 2 Các bước cơ bản khi lập một chương trình PascalBước 1: Soạn thảo chương trình.
Bước 2: Dịch chương trình (nhấn phím F9), nếu có lỗi thì
phải sửa lỗi.
Bước 3: Chạy chương trình (nhấn phím Ctrl-F9).
? Nêu cấu trúc chung của 1
chương trình 3 Cấu trúc chung của một chương trình Pascal - Phần khai báo
+ Khai báo tên chương trình;
+ Khai báo các thư viện (chứa các lệnh viết sẵn có thể sử dụng trong chương trình) và một số khai báo khác.
- Phần thân của chương trình gồm các câu lệnh mà máy
? Nêu các thành phần cơ bản
của NNPC 4 Các thành phần cơ bản của ngôn ngữ Pascal4.1 Từ khóa
Từ khoá là các từ mà Pascal dành riêng để phục vụ cho
mục đích của nó (Chẳng hạn như: BEGIN, END, IF, WHILE, )
4.2 Tên (định danh)
Tên danh là một dãy ký tự dùng để đặt tên cho các hằng, biến, kiểu, tên chương trình con Khi đặt tên, ta phải chú ý một số điểm sau:
- Không được đặt trùng tên với từ khoá
- Ký tự đầu tiên của tên không được bắt đầu bởi các ký tự
Trang 2đặc biệt hoặc chữ số.
Không được đặt tên với ký tự space, các phép toán.
GV giới thiệu 5 Các hàm số học sử dụng cho kiểu số nguyên và số thực:
SQR(x): Trả về x2
SQRT(x): Trả về căn bậc hai của x (x≥ 0)
ABS(x): Trả về |x|
TRUNC(x): Trả về số nguyên gần với x nhất nhưng bé
hơn x.
INT(x):Trả về phần nguyên của x FRAC(x): Trả về phần thập phân của x ROUND(x): Làm tròn số nguyên x PRED(n): Trả về giá trị đứng trước n SUCC(n): Trả về giá trị đứng sau n ODD(n): Cho giá trị TRUE nếu n là số lẻ.
INC(n): Tăng n thêm 1 đơn vị (n:=n+1).
DEC(n): Giảm n đi 1 đơn vị (n:=n-1).
* Các hàm trên kiểu ký tự:
- UPCASE(ch): Trả về ký tự in hoa tương ứng với ký tự ch.
Ví dụ: UPCASE('a') = 'A'.
- ORD(ch): Trả về số thứ tự trong bảng mã ASCII của ký tự
ch Ví dụ ORD('A')=65.
- CHR(n): Trả về ký tự tương ứng trong bảng mã ASCII có
số thứ tự là n Ví dụ: CHR(65)='A'.
- PRED(ch): cho ký tự đứng trước ký tự ch Ví dụ:
Trang 3- HS biết phân biệt từ khóa và tên, nắm chắc quy tắc đặt tên.
- Biết viết biểu thức toán bằng ngôn ngữ Pascal và ngược lại, biết chuyển các biểu thứcbằng ngon ngưa Pascal sang biểu thức Toán
- Biết viết một số chương trình đơn giản
B- TIẾN TRÌNH DẠY HỌC
HOẠT ĐỘNG CỦA GV VÀ HS GHI BẢNG
Hoạt động 1: Kiến thức cơ bản:
- GV yêu cầu HS nhắc lại khái niệm từ
khóa và tên, quy tắc đặt tên
- Yêu cầu HS xác định xem những tên
nào là hợp lệ
- GV chưa lại cho đúng
- GV yêu cầu HS nhắc lại cấu trúc
chung của một chương trình
? Hãy xác định từ khóa và tên trong
chương trình bên
- HS xác định, GV chữa lại cho đúng
- HS nhắc lại các kiểu dự liệu thường
I Kiến thức cơ bản:
1 Từ khóa và tên:
- Từ khóa
- Tên:
- Quy tắc đặt tên:
+ Không trùng từ khóa+ Không dùng dấu cách, dấu trừ, dấu cộng, + Không dùng số ở đầu tên
Ví dụ 1: Những tên nào sau đây là hợp lệ? Vì
sao?
a) ues b) tukhoa c) tu khoac) tu_khoa d) tu-khoa e) tu+khoag) 1tukhoa k) tukhoa1
2 Cấu trúc chung của một chương trình:
- Phần khai báo:
- Phần thân: (phần bắt buộc)
Ví dụ 1: Cho chương trình sau, hãy xác định
từ khóa, tên trong chương trình:
- Xâu kí tự: string, string[x]
4 Các phép toán và các phép so sánh:
- Cộng, trừ, nhân, chia
- Chia lấy phần nguyên
- Chia lấy phần dư
Trang 4- HS nhắc lại cú pháp lệnh in ra màn
hình và lệnh nhập dữ liệu
Hoạt động 2: Bài tập:
- GV yêu cầu HS làm các bài tập trên
vào vở
Lưu ý:
+ abs: giá trị tuyệt đối VD: abs(x)
+ srq: bình phương
+ sqrt: căn bậc hai
+ exp: mũ
Hoạt động 3: Hướng dẫn về nhà:
Yêu cầu HS ghi bài tập về nhà
Bài 4: Viết chương trình in ra màn hình
các trang trí sau:
a) * * * * * b) *
* * * * * * *
* * * * * * * * *
* * * * * * * * * *
5 Lệnh in ra màn hình: write( ); hoặc writeln( );
6 Lệnh nhập dữ liệu: Read( ); hoặc Readln( );
II Bài tập:
Bài 1: Viết biểu thức toán bằng ngon ngữ Pascal:
a) 5x 3 + 2x 2 - 18x + 25 b) -10 -38 c) 2 2 2 2
4
a + c −a
d) x y x y+− e) ( )2
1
x + g)
2
b a
− + ∆
k) p p a p b p c( − )( − )( − )
Bài 2: Viết chương trình tính chu vi và diện thang dưới đây:
program hinhthang;
uses crt;
begin clrscr;
writeln(‘dien tich = ‘, ((3.5 +9)*2.5)/2);
writeln(‘Chu vi = ‘, (3+3.5+4.5+9));
Readln;
End
Bài 3: Chuyển các biểu thức sau sang công thức toán:
a) 2*p*r b) -b/(2*a) c) 1/(n*(n+1)*(n+2)) d) 1+1/(x*x) + 1/(y*y)+1/(z*z)
e) sqrt(p*(p-a)*(p-b)*(p-c)) f) 1(abs(x)+1)+1/((abs(y)+1)*(abs((y)-1))
Bài 3: SỬ DỤNG BIẾN TRONG CHƯƠNG TRÌNH
C D
4,5
3,5 2,5 9,0
Trang 5A- MỤC TIÊU:
- HS biết phân biệt từ khóa và tên, nắm chắc quy tắc đặt tên
- Biết viết biểu thức toán bằng ngôn ngữ Pascal và ngược lại, biết chuyển các biểu thứcbằng ngon ngưa Pascal sang biểu thức Toán
- Biết viết một số chương trình đơn giản
B-TIẾN TRÌNH DẠY HỌC:
HOẠT ĐỘNG CỦA GIÁO VIÊN, HỌC
SINH
GHI BẢNG
Hoạt động 1: Kiến thức cơ bản:
- GV yêu cầu HS nhắc lại khái niệm
biến và cách khai báo biến
? Sử dụng biến để làm gì?
- GV yêu cầu HS nhắc lại khái niệm
biến và cách khai báo biến
- Yêu cầu HS xác định biến, hằng trong
chương trình
- GV chửa lại cho đúng
Hoạt động 2: Bài tập:
GV yêu cầu HS làm các bài tập 4.7 ; 4.8
; 4.9; 4.11; 4.14 ở SBT/T31; 32;33; 34
I Kiến thức cơ bản:
1 Biến và khai báo biến:
- Biến:
- Khai báo: var tênbiến : Kiểudữliệu ;+ Gán giá trị cho biến: tênbiến := biểuthức ;+ Tính toán
2 Hằng:
- Hằng:
- Khai báo: Const tênhằng = giátrị ;
Ví dụ 1: Cho chương trình sau, hãy xác định
biến và hằng trong chương trình:
program baitap;
uses crt;
Var a, b: Integer;
const n=4 ;Begin clrscr;
Writeln(‘Hay nhap vao so a: ‘); Readln(a);Writeln(‘Hay nhap vao so b: ‘); Readln(b);Writeln(‘Thuong cua hai so la: ‘, a/b);
Readln;
End
Hoạt động 3: Hướng dẫn về nhà:
Yêu cầu HS ghi bài tập 4.17; 4.21;
4.23/SBT
Bài 4: CÂU LỆNH ĐIỀU KIỆN
I MỤC TIÊU:
Trang 6-Nắm cú pháp câu lệnh điều kiện dạng thiếu
- Vận dụng làm bài tập
II TIẾN TRÌNH BÀI DẠY
1 Câu lệnh điều kiện dạng thiếu
a) Cú pháp
IF <điều kiện > THEN <câu lệnh>;
b) Sơ đồ thực hiện lệnh
c) Ghi chú
- Điều kiện phải là một biểu thức Logic
- Câu lệnh thực hiện khi Điều kiện đúng (Nhiều hơn 1 lệnh thì phải đặt trong khối lệnh)
if b>max then max:=b;
Writeln('gia tri lon nhat la ', max:2:3);
Trang 7var max,a, b, c:real;
begin
clrscr;
Writeln('nhap vao 3 so '); readln(a, b, c);
max:=a;
if b>max then max:=b;
if c> max then max:=c;
Writeln('gia tri lon nhat la ', max:2:3);
if b<min then min:=b;
if c<min then min:=c;
Writeln('gia tri nho nhat la ', min:2:3);
Write('nhap vao a '); readln(a);
if a=0 then writeln(a , ' khong la so chan, khong la so le') else
Điều kiện?
Sai
Đúng
Trang 8Writeln('chuong trinh giai phuong trinh bac nhat ax + b =0');
Write('nhap vao a='); readln(a);
Write('nhap vao b='); readln(b);
Writeln('chuong trinh giai phuong trinh bac hai a*x*x+b*x+c =0');
Write('nhap vao a='); readln(a);
Write('nhap vao b='); readln(b);
Write('nhap vao c='); readln(c);
Trang 9Write('nhap vao a= '); readln(a);
if a=0 then writeln(a:2:1 ,' khong la so duong, khong la so am') else
If a> 0 then writeln(a:2:1 , ' la so duong ')
if (abs(a-b) < c) and (c<a+b) then
writeln('3 so tren la 3 canh cua mot tam giac')
Trang 10Cỳ phỏp: FOR <biến đếm >:=<giỏ trị đầu> TO <giỏ trị cuối> DO <cõu lệnh >;
- For, to, do là từ khóa
- biến đếm là kiểu số nguyên
- giá trị đầu và giá trị cuối là kiểu số nguyên
- Câu lệnh có thể là câu lệnh đơn giản hoặc câu lệnh ghép
writeln(‘nhap vao so thu’,i); readln(A);
if A>0 then dem:=dem+1;
Trang 11writeln('Nhap vao gia tri n = '); Readln(n);
writeln('Nhap vao gia tri x = '); Readln(x);
A;= sqrt(x);
for i:= 2 to n do A:= sqrt(x + A);
writeln('Gia tri cua A la: ', A:6:2);
If a[i] mod 3 = 0 then d:=d+1;
If d=0 then writeln('Khong co so chia het cho 3')
else write('co ', d,' so chia het cho 3 la: ');
Trang 12-Nắm cú pháp câu lệnh lặp với số lần chưa biết trước
ài 1: Viết chương trình nhập vào số tiền gửi và lãi suất hàng tháng (nhỏ hơn 20
000 000) ở một ngân hàng Tính và in ra số tháng phải gửi để số tiền nhận được của kháchhàng không nhỏ hơn
ài 2: Một khách hàng gửi vào ngân hàng 10 000 000đ với lãi suất 0,1%.Tính số tháng phải
gửi của người khách đó để nhận được số tiền lơn hơn hoặc bằng 20 000 000đ
Trang 13Bài 3: Viết chơng trình nhập vào các số thực x (biểu diễn điểm của một số học sinh)
Vòng lặp dừng lại khi tổng các điểm lớn hơn 100 In ra tổng điểm
Var <tên mãng>: array[<chỉ số đầu> <chỉ số cuối>] 0f <kiểu dữ liệu>;
- Var, array, of là từ khóa
- tờn móng là tờn biến móng
2 Bài tập:
Bài 1: Viết N chơng trình nhập n số nguyên từ bàn phím và in ra màn hình số nhỏ nhất và số
lớn nhất N cũng đợc nhập vào từ bàn phím
Program MaxMin; Uses crt;
Var i, n, max min: Integer;
A: array[1 100] of integer;
Begin clrscr;
Writeln(‘hay nhap vao do dai cua day so, N= ‘); Readln(N);
Writeln(‘Nhap cactu cua day so:’);
For i := 1 to N do
Begin
Trang 14Writeln(‘a[‘,i,’]=’); Readln(a[i]);
End;
Max := a[1]; Min := a[1];
For i := 1 to N do
Begin if Max < a[i] then Max := a[i];
If Min > a[i] then Min := a[i];
End;
Writeln(‘So lon nhat la Max = ‘, Max);
Writeln(‘so nho nhat la Min = , Min);
If a[i] mod 3 = 0 then d:=d+1;
If d=0 then writeln('Khong co so chia het cho 3')
else write('co ', d,' so chia het cho 3 la: ');
for i:=1 to n do
If a[i] mod 3 = 0 then write(a[i],' ');
Readln;
End
Bài 3: Viết chương trình nhập điểm của các bạn trong lớp Sau đó in ra màn hình số bạn đạt
kết quả học tập loại giỏi, khá, trung bình và kém (theo tiêu chuẩn từ 8.0 trở lên đạt loại giỏi,
từ 6.5 đến 7.9 đạt loại khá, từ 5.0 đến 6.4 đạt trung bình và dưới 5.0 xếp loại kém).
For i:=1 to n do Begin
write(i,’ ‘); readln(a[i]); End;
Gioi:=0; Kha:=0; Trungbinh:=0; Kem:=0;
for i:=1 to n do
begin
if a[i]>=8.0 then Gioi:=Gioi+1;
if a[i]<5 then Kem:=Kem+1;
Trang 15if (a[i]<8.0) and (a[i]>=6.5) then Kha:=Kha+1;
if (a[i]>=5) and (a[i]<6.5) then Trungbinh:=trungbinh+1
end;
writeln(‘Ket qua hoc tap:’);
writeln(Gioi,’ ban hoc gioi’);
writeln(Kha,’ ban hoc kha’);
writeln(Trungbinh,’ ban hoc trung binh’);
writeln(Kem,’ ban hoc kem’); readln; End.
Trang 16write('Xau tong la: ');
For i:=1 to length(xt) do
Trang 19Bài 2: Viết chương trình nhập vào một dãy n phần tử In ra giá trị lớn nhất của dãy In ra các
số dương và tổng các số dương của dãy
If max<a[i] then max:=a[i];
Writeln('so lon nhat la : ',max);
Trang 20Bài 2: Lập chương trình tính tiền điện khi biết số Kw tiêu thụ Biết rằng 100 số đầu giá 500,
50 số tiếp theo giá 650đ/kw 50 số tiếp theo là 1200đ/kw và các số trên 200 giá 1600 đồng
Trang 21write('nhap vao chieu dai: ‘);readln(a);
write('nhap vao chieu rong: ‘);readln(b);
write('nhap vao chieu cao: ‘);readln(h);
Program Tam_giac;
Uses crt;
Var a,b,c,s,p:real;
Begin clrscr;
write('nhap vao canh 1: ‘);readln(a);
write('nhap vao canh 2: ‘);readln(b);
write('nhap vao canh 3: ‘);readln(c);
if (a+b>c) and (a+c>b) and (b+c>a) then
Begin
Trang 22Write (' Doc Ngay Thang Nam : ') ;
Readln ( Ngay , Thang , Nam ) ;
Nam := 1900 + ( Nam mod 1900 ) ;
Thu := Abs ( Ngay + Thang * 2 + ( Thang + 1 ) * 3
div 5 + Nam + Nam div 4 ) mod 7 ;
Case Thu Of
0 : Writeln (' Chu Nhat ') ;
1 : Writeln (' Thu Hai ') ;
2 : Writeln (' Thu Ba ') ;
3 : Writeln (' Thu Tu ') ;
4 : Writeln (' Thu Nam ') ;
5 : Writeln (' Thu Sau ') ;
6 : Writeln (' Thu Bay ') ;
Nhâp số báo danh
Nhập điểm văn , toán , ngoại ngữ
Trang 23Bạn đã trúng tuyển ( hoặc Bạn đã không trúng tuyển ) với điều kiện Tổng số điểm >=
15 hay ngược lại
GIẢI
Uses Crt ; Var SBD : Integer;
Van , Toan , Ngoaingu , Tongdiem : Real ;
BEGIN
Clrscr ;
Write (' So bao danh : ') ; Readln( SBD ) ;
Write (' Diem toan : ') ; Readln( Toan ) ;
Write (' Diem ngoai ngu : ') ; Readln( Ngoaingu ) ;
Write (' Diem van : ') ; Readln ( Van ) ;
Tongdiem := Toan + Van + Ngoaingu ;
Clrscr ;
Writeln (' Phieu Bao Diem ') ;
Writeln (' So bao danh : ', SBD ) ;
Writeln (' Diem van : ', Van ) ;
Writeln (' Diem toan : ', Toan ) ;
Writeln (' Diem ngoai ngu : ', Ngoaingu) ;
Writeln (' Tong diem : ', Tongdiem) ;
Nếu là “+” , in kết quả của tổng lên màn hình
Nếu là “-” , in kết quả của hiệu lên màn hình
Nếu là “/” , in kết quả của thương lên màn hình
Nếu là “*” , in kết quả của tích lên màn hình Nếu là “+” , in kết quả của tổng lên mànhình
Nếu là “+” , in kết quả của tổng lên màn hình
Trang 24If ( (N + M) mod 2 = 0 ) Then Writeln(' Dung ! ')
Else Writeln(' Sai ! ') ;
Trang 25Tính giá trị của biểu thức sau :
Write (' Cho so a : ') ; Readln(a) ;
Write (' Cho so mu n : ') ; Readln(n) ;
i := 1 ;
giatri := 1 ;
Trang 27if max<a[i] then max:=a[i];
writeln('so lon nhat la: ',max);
t:=0;
for i:=1 to n do
if a[i]>0 then t:=t+a[i];
writeln('tong cac so duong la: ',t);
Trang 28While ( j < i ) and ( A[j] <> A[i] ) Do j:=j+1;
If j = i Then Writeln( A[i] );
End; Readln; END
Trang 29Writeln (' Nhap cac phan tu cua day : ') ;
Trang 30Var a : Array [1 100] Of Integer ;
n , i : Byte ;
d : integer ;
BEGIN clrscr;
Clrscr ;
Writeln (' Tim USCLN cua N so :') ;
Write (' Nhap so N : ') ; Readln(n) ;
Write(' Cho mot xau ki tu : '); Readln(s);
For ch:= 'A' to 'Z' do A[ch]:=0;
For i:=1 to length(s) do
Trang 31c c Một nhóm các dấu chấm đứng liền nhau bằng dấu ba chấm
a )
Var S: string;
i: byte;
BEGIN
Write(' Cho mot xau ki tu S = '); Readln(S);
For i:=1 to length(S) do
If S[i] = '!' then S[i]:= '.';
Write( ' Chuoi sau khi da bien doi la : ', S);
While i< length(S) do
If (S[i]='.')and(S[i+1]='.') then Delete(S,i,1)
Trang 32Var S: string;
Trang 33i: integer;
BEGIN
Write(' Cho mot xau ki tu : '); Readln(S);
i:= pos('aa', S); {tìm vị trí xâu con 'aa' trong S}
If i<>0 then Writeln(' Ton tai "aa" tai vi tri ', i)
Else Writeln(' Khong ton tai ') ;
a a Si là dấu phẩy đầu tiên
b b Si là dấu phầy cuối cùng
a )
Var S: string;
i: integer;
BEGIN
Write('Cho mot xau S co dau ",": '); Readln(S);
i:= pos(',', S); (* vị trí của dấu ',' trong S *)
If i<> 0 then Write(' Vi tri thoa man la: ', i);
While (i>=1)and(S[i] <> ',' ) do i:=i -1;
If i>=1 then Write('So thu tu thoa man la: ', i)
Else Write('Khong ton tai.');