Bài 15 : Cho trước tệp văn bản TEN.TXT ghi họ tên sinh viên của một lớp, trong đó họ tên mỗi người chiếm 1 dòng và tệp văn bản DIEMDANH.TXT ghi kết quả điểm danh của mỗi người theo quy t
Trang 1- Các thiết bị vào : chuột, bàn phím…
- Thiết bị ra : màn hình, máy in…
Câu 2 : So sánh ROM và RAM
+ Được dung để lưu trữ chương trình tạm thời khi chúng đang chạy và dữ liệu được chương trình sử dụng.
+ Khi tắt máy dữ liệu bị mất đi.
Câu 3 : Nguyên tắc giải một bài toán bằng máy tính điện tử ?
Trang 24 Viết chương trình bằng ngôn ngữ lập trình
5 Thực hiện chương trình trên máy
Câu 4 : Chuyển đổi giữa các hệ đếm và các phép tính ở hệ cơ số 2
+ Dạng thứ 2 là thực hiện các phép tính ở hệ cơ số 2 :cộng, trừ, nhân, chia.
Câu 5 : Cấu trúc của một chương trình pascal ? cho ví dụ ?
- Gồm 3 phần
1 Tiêu đề của chương trình Program tenchuongtrinh;
2 Khai báo Uses Lable Const Var Type Function Procedure
3 Thân chương trình Begin
Trang 3Writeln(‘Dien tich hinh tron la : ‘,S:6:1);
1 For <biến điều kiện> := <Giá trị đầu> to <Giá trị cuối> do <việc>
2 For <biến điều kiện> := < Giá trị cuối > downto < Giá trị đầu > do
Câu 8 : So sánh repeat …until… và while…do…? Cho ví dụ
- Giống nhau : Đều là vòng lặp không xác định
Trang 4- Khác nhau :
Repeat…until… While…do…
Repeat
<công việc>;
Until <biểu thức Boolean>;
While <biểu thức Boolean> do Begin
<công việc>;
End;
+ Thực hiện công việc cho đến khi
biểu thức Boolean có giá trị TRUE.
+ Thực hiện công việc trước và thử
điều kiện Boolean sau.
+ Chừng nào biểu thức boolean có giá trị TRUE thì thực hiện công việc + Kiểm tra điều kiện Boolean trước sau đó mới thực hiện công việc.
KT
Biểu thức boolean
Công việc
Biểu thức boolean
S
Đ Công việc
KT
Trang 5+ Nêu các vòng lặp không các định
+ Cho một đoạn chương trình viết bằng vòng lặp for,while,repeat sau đó viết lại đoạn chương trình trên bằng vòng lặp khác Ví dụ từ repeat viết lại bằng while
+ Dạng tiếp theo cho sơ đồ thuật toán và viết lại bằng vòng lặp
Câu 9 : Cách khai báo một mảng ? cho ví dụ
- Mảng một chiều : có 2 cách khai báo
1 Gián tiếp Type KieumangT=array[Kiểu chỉ dẫn] of kieuphantu;
Var A:KieumangT;
Ví dụ : Type A=array[-3 7] of integer;
Var B:A;
2 Trực tiếp Var A:array[Kiểu chỉ dẫn] of kiểu phần tử;
Ví dụ : Var B:array[-3 7] of integer;
- Mảng nhiều chiều (ở đây chỉ xét đến mảng 2 chiều) : Cách khai báo tương tự mảng 1 chiều
1 Gián tiếp Type PT:array[1 5] of real;
Var MPT:array[1 3] of PT;
2 Trực tiếp Var MPT:array[1 3,1 5] of real;
Câu 10 : Cách khai báo bản ghi ? cho ví dụ
Trang 6Var sv:array[1 50] of sinhvien;
Câu 11 : Đưa ra các thủ tục để ghi dữ liệu cho tệp ? cho ví dụ
Trang 9tham so hinh thuc neu co);
{Khai báo các hằng, biến…}
End.
+ Không trả lại kết quả thông qua tên
của nó.
+ Không thể viết trong các biểu thức.
+ Trả lại cho một giá trị kết quả vô hướng thông qua tên của nó.
+ Được sử dụng trong các biểu thức.
Câu 17 : Phân biệt giữa tham biến và tham trị ? cho ví dụ
Ví dụ : Cho đoạn chương trình sau
Trang 10Writeln(‘Dien tich la : ‘,S:6:1,’ Chu vi la : ‘,P:6:1);
+ là tham số hình thức trong phần tiêu
đề của chương trình con không đặt sau
từ khóa var.
+ Các tham số thực có thể là một biểu
thức Chúng có thể thay đổi trong
chương trình con và khi ra khỏi chương
trình con đó chúng không thay đổi giá
trị.
+ là tham số hình thức trong phần tiêu
đề của chương trình con được đặt sau
từ khóa var.
+ Các tham số thực phải là các biến, không được phép là giá trị Chúng có thể thay đổi trong chương trình con và khi ra khỏi chương trình con chúng giữ nguyên giá trị thay đổi đó.
+ Ngoài ra còn có dạng cho chương trình con xong sau đó đưa ra các trường hợp
bỏ từ khóa var thì kết quả sẽ như thế nào
Câu 18 : Phân biệt biến toàn cục và biến địa phương ? cho ví dụ
Biến toàn cục Biến địa phương
+ là các biến được khai báo trong
chương trình chính, chúng có thể dung
ở mọi nơi trong chương trình.
+ là các biến được khai báo trong chương trình con và nó chỉ có tác dụng trong phạm vi chương trình con đó Khi chương trình con kết thúc thì biến này mất tác dụng.
+ Dạng tiếp theo là cho đoạn chương trình sau đó tìm kết quả khi chạy đoạn chương trình đó
Trang 11Phần B: Bài tập
Bài 1 : Cho dãy x1,x2…xn Tính giá trị trung bình của dãy
var i,n : integer;
var i,n,k,l : integer;
x,y,z : array[1 100] of real;
Trang 12for i:=1 to l do
writeln('z[',i,'] = ',z[i]:4:1);
readln;
end
Bài 3 : Cho dãy x1,x2…xn Sắp xếp dãy số sao cho phần tử >=0 về đầu, phần tử
<0 về cuối, trật tự các phần tử không thay đổi
var i,n,k : integer;
x,y : array[1 100] of real;
Bài 4 : Cho dãy x1,x2…xn Xóa phần tử xk
var i,n,k : integer;
x,y : array[1 100] of real;
Trang 13var i,n,k,m : integer;
x,y : array[1 100] of real;
write('Nhap vi tri k :');readln(k);
write('Nhap so can chen M :');readln(m);
Trang 14writeln('Day sau khi chen la: ');
for i:=1 to n+1 do write(a[i]:4);
1 Tính điểm trung bình của từng sinh viên
2 Tìm ra những sinh viên có điểm trung bình cao nhất
3 Sắp xếp lại bảng trên theo trật tự tăng dần của điểm trung bình
Trang 15Bài 7 : Cho ma trận Anxm, tính tổng từng hàng, từng cột của ma trận
var i,m,n,j : integer;
a:array[1 10,1 10] of real;
b1:array[1 10] of real;
b2:array[1 10] of real;
begin
Trang 16write('Nhap so hang : ');readln(n);
write('Nhap so cot : ');readln(m);
writeln('Hang ',i,'= ',b1[i]:4:1);
writeln('Tong tung cot la : ');
write('Nhap so hang :');readln(n);
write('Nhap so cot :');readln(m);
Trang 18Bài 10: Cho ma trận Anxm tìm giá trị lớn nhất của ma trận, xóa cột đầu tiên chứa giá trị lớn nhất đó.
write('Nhap so hang: ');readln(n);
write('Nhap so cot : ');readln(m);
for i:=1 to n do
Trang 19writeln('vi tri cuoi cung o cot :',k);
writeln('Nhap ma tran vecto B');
Trang 20a : array[1 50,1 50] of real;
y : array[1 50,1 50] of real;
b:array[1 100] of real;
begin
write('Nhap so hang: ');readln(n);
write('Nhap so cot : ');readln(m);
Trang 21writeln(' Tong lon hon tich')
else if tong=tich then
writeln(' Tong bang tich ')
else
writeln('Tong be hon tich');
readln;
end
Trang 22Bài 14 : Kiểu bản ghi - Cho bảng sau :
1…n
1 Đếm số buổi đi học, nghỉ học có phép, nghỉ học không phép
2 Đưa ra những sinh viên không được thi biết điều kiện không được thi là số buổi nghỉ học không phép >= 20%m
Trang 23end;
end;
writeln('Danh sach thong tin di hoc cua sinh vien la: '); writeln('STT':4,'Ho ten':20,'Di hoc':8,'Khong phep':12,'Co phep':9,'Trang thai':18);
for i:=1 to n do
with sv[i] do
begin
write(i:4,ten:20,dh:8,kp:12,cp:9);
if kp/m>0.2 then write('Khong duoc thi':18)
else write('Duoc thi':18);
writeln;
end;
readln;
End
Bài 15 : Cho trước tệp văn bản TEN.TXT ghi họ tên sinh viên của một lớp, trong
đó họ tên mỗi người chiếm 1 dòng và tệp văn bản DIEMDANH.TXT ghi kết quả điểm danh của mỗi người theo quy tắc :
+ Có mặt đánh dấu “c”; vắng có lý do “v”; vắng không lý do “k”
+ Đánh dấu điểm danh của mỗi sinh viên được ghi liên tiếp trên 1 dòng
Vẽ sơ đồ thuật toán và viết chương trình pascal để
1 Thống kê số buổi đi học, số buổi vắng (có và không lý do) đối với từng sinh viên.
2 Lập danh sách những sinh viên đi học chăm chỉ nhất (có số buổi có mặt cao nhất) và hãy cho biết co bao nhiêu sinh viên như thế.
3 Kết quả ghi vào tệp ketqua.txt theo quy cách sau
- Mỗi sinh viên chiếm 1 dòng gồm các thông tin
STT(2 dấu cách)họ tên sv(2 dấu cách)số buổi có mặt(2 dấu cách)số buổi vắng mặt có lý do(2 dấu cách)số buổi vắng mặt không lý do
- Các dòng tiếp theo : Họ tên sinh viên chăm chỉ nhất (họ tên mỗi sinh viên viết trên 1 dòng)
- Dòng cuối cùng : số sinh viên đi học chăm chỉ nhất
Trang 26Bài 16 : Cho trước tệp văn bản TEN.TXT ghi họ tên các chủ hộ của một phường, trong đó mỗi dòng ghi họ tên của một chủ hộ và tệp văn bản SODIEN.TXT ghi số lượng điện các hộ tiêu thụ trong tháng, trong đó số lượng điện tiêu thụ của mỗi hộ ghi trên 1 dòng, số lượng điện các tháng ghi cách nhau 1 dấu cách
Vẽ sơ đồ thuật toán và viết chương trình pascal để :
1 Tính số lượng điện trung bình hàng tháng của mỗi hộ
2 Lập danh sách các hộ trong phường có số điện tiêu thụ trung bình hàng tháng là ít nhất
Kết quả ghi vào tệp văn bản KETQUA.TXT theo quy cách sau :
- Mỗi hộ gia đình chiếm 1 dòng gồm các thông tin sau:
STT(2 dấu cách)Họ tên chủ hộ(2 dấu cách)Số lượng điện trung bình hàng tháng của hộ
- Dòng tiếp theo : Số điện tiêu thụ trung bình ít nhất trong phường
- Các dòng tiếp theo : Họ tên các chủ hộ có số lượng điện tiêu thụ trung bình hàng tháng ít nhất, họ tên mỗi chủ hộ viết trên 1 dòng
Trang 28writeln(f3,'Ten cac chu ho co luong dien tieu thu it nhat
1 Một chương trình con nhập danh sách, chỉ nhập tt, kết quả học tập, còn phân loại tính theo công thức :
Phân loại bằng A nếu kết quả học tập >=8
Phân loại bằng B nếu kết quả học tập >=6
Phân loại bằng C nếu kết quả học tập >=5
Phân loại bằng D nếu kết quả học tập >=4
Phân loại bằng E nếu kết quả học tập < 4
2 Ghi danh sách ra tệp
3 Mở tệp, đọc dữ liệu vào bộ nhớ trong
4 Một chương trình con sắp xếp lại danh sách tăng dần theo cột phân loại
5 Hiện lại danh sách sau khi sắp xếp
Trang 29write('Nhap so sinh vien: ');
if ketQua>=8 then loai:='A'
else if ketQua>=6 then loai:='B'
else if ketQua>=5 then loai:='C'
else if ketQua>=4 then loai:='D'
Trang 30- Một chương trình con nhập mảng A, ghi ra tệp
- Mở lại tệp, đọc dữ liệu vào bộ nhớ trong
- Một chương trình con sắp xếp từng hàng của ma trận A theo thứ tự tăng dần
- Một chương trình con hiện ma trận đã sắp xếp ra màn hình và ghi ra tệp Giải :
var a,b:array[1 10,1 10] of real;
Trang 33Viết chương trình để:
- Tìm xếp loại của từng sinh viên biết
Nếu DTB>=9, sinh viên sẽ xếp loại “xuat sac”
Nếu 8<=DTB<9, sinh viên sẽ xếp loại “Gioi”
Nếu 7<=DTB<8, sinh viên sẽ xếp loại “Kha”
Nếu DTB<7, sinh viên sẽ xếp loại “Trung binh”
- Tìm học bổng của từng sinh viên biết
Nếu DTB>=9, sinh viên sẽ được học bổng 240000
Nếu 8<=DTB<9, sinh viên sẽ được học bổng 180000
Nếu 7<=DTB<8, sinh viên sẽ được học bổng 120000
Nếu DTB<7, sinh viên sẽ không được học bổng
- Sắp xếp lại bảng trên theo trật tự giảm dần của điểm trung bình Đưa kết quả ra màn hình và ra file ketqua.txt dưới dạng sau
+ dòng 1 : KẾT QUẢ THI HỌC KỲ CỦA LỚP
+ dòng 2 trở đi mỗi dòng ghi: STT, 2 dấu cách, Họ tên, 2 dấu cách, điểm trung bình, 2 dấu cách, Xếp loại, 2 dấu cách, Học bổng của từng sinh viên
Trang 35{=== In Ket Qua Ra File ===}
{===Dua ket qua ra man hinh===}
writeln('KET QUA THI HOC KY CUA LOP:');
writeln('Chu vi tam giac la : ',CVtg:6:1);
writeln('Dien tich tam giac la : ',Stg:6:1);
writeln('Dien tich chu nhat la : ',Scn:6:1);
writeln('Chu vi chu nhat la : ',CVcn:6:1);
writeln('Chu vi duong tron la : ',Chv:6:1);
writeln('Dien tich duong tron la : ',DT:6:1);
end;
begin
write('Nhap ban kinh duong tron : ');readln(r);
Trang 36DT(r,s,cv);
write('Nhap chieu rong hcn : ');readln(rong);
write('Nhap chieu dai hcn : ');readln(dai);
hcn(dai,rong,s1,cv1);
write('Nhap canh thu 1 : ');readln(t1);
write('Nhap canh thu 2 : ');readln(t2);
write('Nhap canh thu 3 : ');readln(t3);
- Chương trình điều khiển (Chương trình chính)
- Một chương trình con để nhập dữ liệu thông tin khách hàng từ bàn phím vào máy
- Một chương trình con lấy thông tin số dư tài khoản hiển thị kết quả lên màn hình với số PIN được nhập từ bàn phím
- Một chương trình con để rút tiền ra từ tài khoản theo quy trình :
1 Yêu cầu nhập số PIN
2 Nếu đúng số PIN, thì yêu cầu nhập số tiền cần rút Nếu số tiền cần rút nhỏ hơn hoặc bằng số dư thì trừ tiền trong số dư đúng bằng số tiền cần rút.
3 Thông báo giao dịch thành công Giải :
Trang 37write('Nhap so pin cua KH thu ',i,' :
writeln('Chuong trinh con rut tien');
write('Nhap so pin tai khoan : ');readln(PIN1);
Trang 38Bài 22: Lập sơ đồ thuật toán và viết chương trình bằng ngôn ngữ lập trình Pascal
để tính tổng mảng hai chiều số thực bằng cách viết các chương trình con sau :
- Nhập số liệu cho mảng hai chiều từ bàn phím
- Xuất kết quả mảng hai chiều ra màn hình theo dạng ma trận
- Tính tổng mảng hai chiều
Nội dung chương trình chính gồm :
1.Nhập số liệu cho mảng thứ nhất rồi nhập số liệu cho mảng thứ hai
2.Xuất kết quả mảng thứ nhất rồi xuất kết quả mảng thứ hai (ra màn hình)
3.Tính tổng 2 mảng trên rồi xuất kết quả ra màn hình
Trang 39Procedure xuat(var c:mang);
Bài 23: Cho danh sách các chủ hộ sử dụng điện, mỗi chủ hộ biết các thông tin : Mã
số, họ tên, địa chỉ, điện thoại, loại hợp đồng (SH:sinh hoạt, SX:sản xuất, KD: kinh doanh), ngày ký hợp đồng Hãy lập thuật toán và viết chương trình bằng ngôn ngữ lập trình pascal (dùng cấu trúc bản ghi) để thực hiện các yêu cầu sau đây :
- Nhập dữ liệu đã cho vào máy từ bàn phím
- Tìm số hộ của mỗi loại hợp đồng và tách danh sách trên thành ba danh sách tương ứng với mỗi loại hợp đồng : SH, SX và KD.
- Đưa kết quả tìm được ra màn hình.
Giải : (Dino)
uses crt;
type hodan=record
Trang 40writeln('Nhap thong tin cac ho dan: ');
demsh:=0; demsx:=0; demkd:=0;
writeln('So ho hop dong kinh doanh la: ',demkd);
writeln('So ho hop dong san xuat la: ',demsx);
writeln('So ho hop dong sinh hoat la: ',demsh);
writeln('Hop dong':10,'Ten chu ho':20,'Dia
Trang 41end;
writeln(' ');
Bài 24: Cho bảng N môn học
Vẽ sơ đồ thuật toán và viết chương trình pascal có sử dụng kiểu mảng các bản ghi
để thực hiện :
- Nhập mảng (TT, tên môn học, giờ lý thuyết, giờ bài tập) từ bàn phím, tính tổng số giờ bằng số tiết lý thuyết cộng số tiết bài tập, ghi nội dung bảng ra tệp
- Mở lại tệp, đọc dữ liệu vào bộ nhớ trong
- Tính tổng cột giờ lý thuyết, tổng cột giờ bài tập, tổng cột giờ tổng số
- Tính phần trăm của tổng số giờ bài tập, tổng số giờ lý thuyết so với tổng toàn bộ số giờ
- Hiện các kết quả ra màn hình và đưa ra tệp
Giải : (Dino)
uses crt;
type monhoc = record
stt:integer;
Trang 42writeln('Mon thu: ',i);
write('Ten mon hoc: ');
Trang 43writeln('Tong cot so gio ly thuyet la: ',tonglt:3);
writeln('Tong cot so gio thuc hanh la: ',tongth:3);
writeln('Tong cot gio tong so la: ',tong:3);
writeln('So phan tram ly thuyet:',ptlt:3:1,'%');
writeln('So phan tram thuc hanh:',ptth:3:1,'%');
writeln(f2,'Tong cot so gio ly thuyet la: ',tonglt:3);
writeln(f2,'Tong cot so gio thuc hanh la: ',tongth:3);
writeln(f2,'Tong cot gio tong so la: ',tong:3);
writeln(f2,'So phan tram ly thuyet:',ptlt:3:1,'%');
writeln(f2,'So phan tram thuc hanh:',ptth:3:1,'%');
close(f1); close(f2);
readln;
End
Bài 25: Một cửa hàng sách quản lý sách với các thông tin sau :
Mã sách, tên sách, tên tác giả, thể loại, năm xuất bản, số lượng Hãy khai báo kiểu bản ghi các thành phần nêu trên Lập sơ đồ thuật toán và viết chương trình bằng ngôn ngữ lập trình pascal thực hiện các công việc sau :
- Nhập dữ liệu thông tin n quyển sách từ bàn phím vào máy với n nhập từ bàn phím.
- In ra danh sách những quyến sách có số lượng nhỏ hơn m với m nhập từ bàn phím
- Ghi lên file SACH.TXT danh sách toàn bộ số sách của cửa hàng theo thứ
Trang 44Bài 26: Hồ sơ thông tin sinh viên gồm nhưng thành phần sau :
Mã sinh viên, họ và tên, năm sinh, quê quán, giới tính Hãy khai báo kiểu bản ghi chứa các thành phần nêu trên Lập sơ đồ thuật toán và viết chương trình bằng ngôn ngữ lập trình pascal thực hiện các yêu cầu sau :
- Một chương trình điều khiển (chương trình chính)
- Một chương trình con để nhập dữ liệu thông tin sinh viên từ bàn phím vào máy