- Ngôn ngữ lập trình bậc cao nói chung không phụ thuộc vào loại máy, cùng một chương trình có thể thực hiện ở nhiều máy khác nhau.. - Ngôn ngữ lập trình bậc cao cho phép làm việc với nh
Trang 1Gi¶i Bµi TËp Tin Häc 11
Trang 21 Người ta phải xây dựng ngôn ngữ lập trình bậc cao vì
- Ngôn ngữ lập trình bậc cao gần gũi với tự nhiên hơn, thuận tiện cho
ñ ông ñảo người lập trình
- Ngôn ngữ lập trình bậc cao nói chung không phụ thuộc vào loại máy,
cùng một chương trình có thể thực hiện ở nhiều máy khác nhau
- Chương trình viết bằng ngôn ngữ bậc cao dễ hiểu, dễ hiệu chỉnh và dễ
nâng cấp hơn
- Ngôn ngữ lập trình bậc cao cho phép làm việc với nhiều kiểu dữ liệu và
cách tổ chức dữ liệu ña dạng, thuận tiện cho mô tả thuật toán
2 Chương trình dịch là chương trình ñặc biệt, có chức năng chuyển ñổi
chương trình ñược viết trên ngôn ngữ lập trình bậc cao thành chương
trình thực hiện ñược trên máy tính
3
có dịch ñược không Dịch toàn bộ chương trình nguồn thành một
chương trình ñích có thể thực hiện trên máy và có thể lưu trữ lại ñể sử
dụng về sau khi cần
ngay câu lệnh vừa dịch ñược hoặc thông báo lỗi nếu không dịch ñược
4 Các ñiểm khác nhau giữa tên dành riêng và tên chuẩn: tên dành riêng
không ñược dùng khác với ý nghĩa xác ñịnh, tên chuẩn có thể dùng với
ý nghĩa khác
5 ð úng: tamgiac, bai5a, xemxonxiu_ngu
6 C: 6,23→ 6.23
E: A20 tên chưa có giá trị
G: 4+6 H: ‘C → ‘C’I: ‘TRUE’ “true” là hằng logic
M M
Trang 3Bµi Thùc Hµnh Sè 1
- - -***** ***** ***** - - -
1. Sự khác nhau giữa hằng có ñặt tên và tên biến: Giá trị của hằng có ñặt
tên không thay ñổi khi thực hiện chương trình còn giá trị của biến có
thể thay ñổi tại từng thời ñiểm thực hiện chương trình
2. Khai báo biến nhằm những mục ñích sau:
- Xác ñịnh kiểu của biến Trình dịch sẽ biết cách tổ chức ô nhớ chứa giá
trị của biến
- ðư a tên biến vào danh sách các ñối tượng ñược chương trình quản lí
- Trình dịch biết cách truy cập giá trị của biến và áp dụng thao tác thích
Trang 4else write('Khong thu
if (abs(y)<=1) and (abs(x)<=1) then
if (abs(y)<=1) and (abs(x)<=1) then
kt:=true;
kt:=true;
if kt then write('Diem vua nhap thuoc phan ga
cheo')
cheo')
else write('Khong thuoc');
else write('Khong thuoc');
write('Nhap ban kinh duong tron: ');
write('Nhap ban kinh duong tron: ');
readln(a);
readln(a);
if a<0 then writeln('Nhap lai!');
if a<0 then writeln('Nhap lai!');
Trang 5if h<0 then writeln('Nhap lai!');
if h<0 then writeln('Nhap lai!');
Trang 62 Câu lệnh ghép là một câu lệnh ñược hợp thành từ nhiều câu lệnh thành
phần Câu lệnh ghép nhằm thực hiện thao tác gồm nhiều thao tác thành
phần Mỗi thao tác thành phần ứng với một câu lệnh ñơn hoặc một câu lẹnh
ghép khác Câu lệnh ghép là một trong các yếu tố ñể tạo khả năng chương
trình có cấu trúc Các câu lệnh ñặt giữa begin và end;
Trang 7write('nhap hai so x va y: '); readln(x,y);
write('nhap hai so x va y: '); readln(x,y);
writeln('tong can tim: ',z:9);
writeln('tong can tim: ',z:9);
endendend;;;
if (x*x+y*y>1) and (y>=x) then
if (x*x+y*y>1) and (y>=x) then
beginbeginbegin
z:=(x+y);
z:=(x+y);
writeln('tong can tim: ',z:9);
writeln('tong can tim: ',z:9);
endendend;;;
if (x*x+y*y>1) and (y<x) then
if (x*x+y*y>1) and (y<x) then
begin
begin
z:=0.5;
z:=0.5;
writeln('tong can tim: ',z);
writeln('tong can tim: ',z);
write('Nhap toa do tam hinh tron: ');
write('Nhap toa do tam hinh tron: ');
readln(a,b);
readln(a,b);
write('Nhap ban kinh r: ');readln(r);
write('Nhap ban kinh r: ');readln(r);
if sqrt(sqr(x
if sqrt(sqr(x -a)+sqr(xa)+sqr(xa)+sqr(x -b))<r thenb))<r thenb))<r then
begin
begin
Trang 9if (x+y=36) and (2*x+4*y=100) then
if (x+y=36) and (2*x+4*y=100) then
begin
begin
writeln('Co ',x,' con Ga');
writeln('Co ',x,' con Ga');
write('Co ',y,' con Cho');
write('Co ',y,' con Cho');
write('Nhap tuoi cha: ');readln(b);
write('Nhap tuoi cha: ');readln(b);
write('Nhap tuoi con: ');readln(c);
write('Nhap tuoi con: ');readln(c);
if (bif (bif (b -c<25) or (b<2*c) thenc<25) or (b<2*c) thenc<25) or (b<2*c) then
writeln('Du lieu khong hop le,nhap lai.');
writeln('Du lieu khong hop le,nhap lai.');
Trang 10until (b
until (b -c>=25) and (b>=2*c);c>=25) and (b>=2*c);c>=25) and (b>=2*c);
if b=2*c then
if b=2*c then
writeln('Hien nay tuoi cha gap hai
var A, B, St, Luu :real;
var A, B, St, Luu :real;
write('Nhap so tien gui: ');readln(a);
write('Nhap so tien gui: ');readln(a);
Trang 11Ch−¬ng 4 : :
iÓu d÷ liÖu cã cÊu tróc
Bµi Thùc Hµnh Sè 3
type Myarray=array[1 nmax] of integer;
type Myarray=array[1 nmax] of integer;
for i:=1 to n do A[i]:=random(300)[i]:=random(300)[i]:=random(300) -random(300);random(300);random(300);
for i:=1 to n do write(A[i]:5); writeln;
for i:=1 to n do write(A[i]:5); writeln;
for i:=1 to n do
for i:=1 to n do
if A[i]>0 then posi:=posi+1
if A[i]>0 then posi:=posi+1
else if A[i]<0 then
else if A[i]<0 then
if A[i] mod k = 0 then s:=s+A[i];
if A[i] mod k = 0 then s:=s+A[i];
writeln('Tong can tinh la: ',s);
writeln('Tong can tinh la: ',s);
Trang 12var A:array[1 100] of integer;
var A:array[1 100] of integer;
write('Nhap so luong phan tu: ');readln(n);
write('Nhap so luong phan tu: ');readln(n);
for i:=1 to n do
for i:=1 to n do
begin
begin
write('Nhap phan tu thu ',i,': '); readln(a[i]);
write('Nhap phan tu thu ',i,': '); readln(a[i]);
if a[i]>a[i -1] then max:=A[i];1] then max:=A[i];1] then max:=A[i];
for j:=1 to n do if a[j]=max then
for j:=1 to n do if a[j]=max then
writeln('chi so phan tu lon nh
Trang 13var A:array[1 250] of integer;
var A:array[1 250] of integer;
for i:=1 to n do A[i]:=random(300)
for i:=1 to n do write(A[i]:5);
for i:=1 to n do write(A[i]:5);
write('Sau khi dao ',dem,' lan');
write('Sau khi dao ',dem,' lan');
Trang 14for i:=1 to x div 2 do
for i:=1 to x div 2 do
if S[i]<>S[x
if S[i]<>S[x -i+1] then kt:=false;i+1] then kt:=false;i+1] then kt:=false;
if kt then write('Xau la palindrome')
if kt then write('Xau la palindrome')
else write('Xau khong la palindrome');
else write('Xau khong la palindrome');
write('Nhap xau: ');readln(S);
write('Nhap xau: ');readln(S);
for i:=1 to length(S) do
for i:=1 to length(S) do
for i:=1 to length(s) do
for i:=1 to length(s) do
if s[i]=ch then dem:=dem+1;
if s[i]=ch then dem:=dem+1;
Trang 15if dem>0 then
if dem>0 then
writeln('Trong xau co ',dem,' chu ',ch);
writeln('Trong xau co ',dem,' chu ',ch);
write('Nhap xau: ');readln(s);
write('Nhap xau: ');readln(s);
Trang 16
Bµi tËp ch−¬ng 4
Bµi tËp ch−¬ng 4
1 Mảng là kiểu dữ liệu có cấu trúc bởi vì mảng là kiểu có cấu trúc ñược
ñề cập tới sớm nhất trong các ngôn ngữ lập trình Nó ñược xây dựng
từ những kiểu dữ liệu ñã có theo quy tắc khuôn dạng do ngôn ngữ lập
trình cung cấp Nó ñược dùng ñể chỉ ñịnh một nhóm ñối tượng cùng
một tính chất nào ñó
2 Chúng ta phải khai báo kích thước mảng bởi vì ñể cách ñánh số các
phần tử của nó
3 real, boolean, integer, longint
4 Tham chiếu ñến phần tử của mảng một chiều ñược xác ñịnh bởi tên
mảng cùng với chỉ số, ñược viết trong cặp ngoặc [ ] (Ví dụ A[1]) Còn
tham chiếu ñến phần tử của mảng 2 chiều ñược xác ñịnh bởi tên mảng
cùng với 2 chỉ số ñược phân cách bởi dấu phẩy và viết trong cặp ngoặc
[ ] (A[1,2])
Bài 5
uses crt;
uses crt;
var a:array[1 100] of integer;
var a:array[1 100] of integer;
write('Nhap phan tu thu ',i,': ');
write('Nhap phan tu thu ',i,': ');
if a[i+1] -a[i]=d then csc:=true;a[i]=d then csc:=true;a[i]=d then csc:=true;
if csc then writeln('Day la cap so cong') else
if csc then writeln('Day la cap so cong') else
write('Day khong la cap so cong');
write('Day khong la cap so cong');
readln
readln end end end
VÝ Dô
VÝ Dô
Trang 17var A:array[1 100] of integer;
var A:array[1 100] of integer;
write('Nhap phan tu thu ',i,': ');
write('Nhap phan tu thu ',i,': ');
readln(a[i]);
readln(a[i]);
if abs(A[i])>1000 then write('Nhap so <1000 OK');
if abs(A[i])>1000 then write('Nhap so <1000 OK');
if a[i] mod 2= 0 then dem:=dem+1
if a[i] mod 2= 0 then dem:=dem+1
end
writeln('So luong so le: ',n
writeln('So luong so chan: ',dem);
writeln('So luong so chan: ',dem);
while (u<=sqrt(A[i])) and
while (u<=sqrt(A[i])) and
write('So luong so nguyen to: ',d);
write('So luong so nguyen to: ',d);
Trang 18if n<2 then writeln('Nhap N>2 OK!');
if n<2 then writeln('Nhap N>2 OK!');
write('So fibonaxi thu
write('So fibonaxi thu ',n,' la ' ,f);',n,' la ' ,f);',n,' la ' ,f);
Chương trình thực hiện việc hoán ñổi vị trí dòng thứ i với dòng thứ N-i+1,
nghĩa là hoán ñổi vị trí dòng ñầu tiên với dòng cuối cùng của mảng hai
Trang 19chiều, dòng thứ hai từ trên xuống với dòng thứ hai từ dưới lên,… Việc hoán
ñổ i vị trí dòng thứ i với dòng ñối xứng với nó ñược thực hiện khi i nhận giá
trị từ 1 ñến N, làm cho mỗi dòng ñược hoán ñổi vị trí 2 lần Vì vậy mạng A
sau khi hoán ñổi không thay ñổi so với ban ñầu
var A:array[1 15,1 15] of integer;
var A:array[1 15,1 15] of integer;
max:=A[1,i];ind:=1;
for j:=2 to n do for j:=2 to n do
if A[j,i] > max then
if A[j,i] > max then
endendend;;; vsp:=A[i,i];
Trang 20write('Nhap xau: ');readln(S);
write('Nhap xau: ');readln(S);
if (s[i]>='0') and (s[i]<='9') then inc(dem);
if (s[i]>='0') and (s[i]<='9') then inc(dem);
write('Co ',dem,' chu so trong xau vua nhap');
write('Co ',dem,' chu so trong xau vua nhap');
const max=60; max=60; max=60;
type Hocsinh = record
type Hocsinh = record
var lop:array[1 max] of hocsinh;
var lop:array[1 max] of hocsinh;
write('Nhap so luong hoc sinh: ');readln(n);
write('Nhap so luong hoc sinh: ');readln(n);
Trang 21writeln('Nhap so lieu hoc sinh thu ',i,':');
writeln('Nhap so lieu hoc sinh thu ',i,':');
write('Ho va ten: ');readln(hoten);
write('Ho va ten: ');readln(hoten);
write('Ngay sinh: ');readln(ngaysinh);
write('Ngay sinh: ');readln(ngaysinh);
write('Dia chi : ');readln(diachi);
write('Dia chi : ');readln(diachi);
write('Diem toan: ');readln(toan);
write('Diem toan: ');readln(toan);
write('Diem van : '
write('Diem van : ');readln(van););readln(van););readln(van);
if toan+van>=18 then xeploai:='A';
if toan+van>=18 then xeploai:='A';
if (toan+van>=14) and (toan+van<18) then
if (toan+van>=14) and (toan+van<18) then
xeploai:='B';
xeploai:='B';
if (toan+van>=10) and (toan+van<14) then
if (toan+van>=10) and (toan+van<14) then
writeln('Danh sach hoc sinh:');
writeln('Danh sach hoc sinh:');
writeln(hoten:30,' - xep loai: ',xeploai); xep loai: ',xeploai); xep loai: ',xeploai);
writeln('Danh sach hoc sinh loai A:');
writeln('Danh sach hoc sinh loai A:');
Trang 23Ch−¬ng 5 : :
hao t¸c víi
hao t¸c víi tÖp tÖp
Bµi tËp ch−¬ng
Bµi tËp ch−¬ng
1 Một số trường hợp phải dùng tệp: lưu trữ lượng thông tin lớn, dùng
lâu dài, ít thay ñổi như tên người trong một cơ quan, hồ sơ của sinh
viên, lương cán bộ,
2 SGK
3 Phải mở tệp trước khi ñọc tệp vì trước khi sử dụng tệp phải có câu
lệnh mở tệp ñể trình dịch biết thực hiện mục ñích mở tệp ñể ñọc hay
ghi, ñồng thời ñặt con trỏ tệp vào vị trí thích hợp
4 Phải dùng lệnh ñóng tệp sau hi ñã kết thúc ghi dữ liệu vào tệp ñể thống
tất việc ghi dữ liệu ra tệp Không có câu lệnh ñóng tệp thì chương trình
sẽ không thể ghi ñược dữ liệu vào tệp
Trang 24Ch−¬ng 6 : :
h−¬ng tr×nh con vµ lËp tr×nh cã
h−¬ng tr×nh con vµ lËp tr×nh cã cÊu tróc
cÊu tróc
Bµi Thùc Hµnh Sè 6
procedure catdan(s1:str; var s2: str);
procedure catdan(s1:str; var s2: str);
procedure chuchay(s1:str; dong
Trang 25write('Nhap xau : ');readln(s1);
write('Nhap xau : ');readln(s1);
Trang 26n, i, deu, can, vuong:word;
n, i, deu, can, vuong:word;
f,g:text;
f,g:text;
function khcach(P, Q: Diem):real;
function khcach(P, Q: Diem):real;
procedure daicanh(var R:tamgiac; var a, b, c:real);
procedure daicanh(var R:tamgiac; var a, b, c:real);
deu:=false; can:=false; vuong:=false;
deu:=false; can:=false; vuong:=false;
Trang 27readln(f, T.A.x, T.A.y, T.B.x, T.B.y, T.C.x, T.C.y);
readln(f, T.A.x, T.A.y, T.B.x, T.B.y, T.C.x, T.C.y);
tinhchat(T,D,cn,v);
tinhchat(T,D,cn,v);
if d then deu:=deu+1 else
if d then deu:=deu+1 else
writeln(g,'co ',deu,' tam giac deu');' tam giac deu');' tam giac deu');
writeln(g,'co ',can,' tam giac can');
writeln(g,'co ',can,' tam giac can');
writeln(g,'co ',vuong,' tam giac vuong');
writeln(g,'co ',vuong,' tam giac vuong');
Tệp văn bản chứa tọa độ các đỉnh của các tam giác
Tệp văn bản chứa tọa độ các đỉnh của các tam giác
Trang 28Writeln(‘*I love you ok!*’);
Writeln(‘*I love you ok!*’);
Writeln(‘****************’);
Writeln(‘****************’);
End;
End;
3 Chương trình con cho nhiều hơn một kết quả:
Procedure hoandoi(var x, y:integer);
Procedure hoandoi(var x, y:integer);
function ucln(a, b:integer): integer;
function ucln(a, b:integer): integer;
function bcnn(a, b:integer): integer;
function bcnn(a, b:integer): integer;
begin
begin
Trang 29bcnn:=a*b div ucln(a,b);
bcnn:=a*b div ucln(a,b);
write('Boi chung nho nhat: ',bcnn(x,y));
write('Boi chung nho nhat: ',bcnn(x,y));