Top Banner
Góc học tập khoa CNTT - ĐHXD Phần A: Lý thuyết Câu 1: Các bộ phận chức năng của máy tính ? a)CPU - Là khối xử lý trung tâm, là bộ chỉ huy của máy tính. Nó có nhiệm vụ thực hiện các phép tính số học và logic đồng thời điều khiển các quá trình thực hiện lệnh. - Có 3 bộ phận chính : Khối tính toán số học ALU : Thực hiện hầu hết các thao tác, phép tính quan trọng của hệ thống. Khối điều khiển CU : quy định dãy thao tác cần làm đối với hệ thống bằng cách tạo ra tín hiệu điều khiển mọi việc. Các thanh ghi : lưu trữ thông tin tạm thời trong quá trình làm việc của CPU b)Bộ nhớ - Chia ra làm 2 loại : Bộ nhớ trong : ROM, RAM Bộ nhớ ngoài : ổ cứng, USB, CD, VCD… c) Các thiết bị vào ra - 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 ROM RAM + Chỉ có thể đọc thông tin ra + Do nhà sản xuất ghi vào, lưu trữ chương trình cố + Có thể ghi vào, đọc ra một các dễ dàng. + Được dung để lưu trữ chương trình tạm thời khi 1 https://www.facebook.com/groups/CNTT.NUCE/
61

Dề cương Tin học dại cương PM

Apr 22, 2023

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

Phần A: Lý thuyếtCâu 1: Các bộ phận chức năng của máy tính ?

a)CPU- Là khối xử lý trung tâm, là bộ chỉ huy của máy

tính. Nó có nhiệm vụ thực hiện các phép tính số học và logic đồng thời điều khiển các quá trình thực hiện lệnh.

- Có 3 bộ phận chính : Khối tính toán số học ALU : Thực hiện hầu hết

các thao tác, phép tính quan trọng của hệ thống.

Khối điều khiển CU : quy định dãy thao tác cần làm đối với hệ thống bằng cách tạo ra tínhiệu điều khiển mọi việc.

Các thanh ghi : lưu trữ thông tin tạm thời trong quá trình làm việc của CPU

b)Bộ nhớ- Chia ra làm 2 loại :

Bộ nhớ trong : ROM, RAM Bộ nhớ ngoài : ổ cứng, USB, CD, VCD…

c)Các thiết bị vào ra- 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

ROM RAM+ Chỉ có thể đọc thông tinra+ Do nhà sản xuất ghi vào,lưu trữ chương trình cố

+ Có thể ghi vào, đọc ra một các dễ dàng.+ Được dung để lưu trữ chương trình tạm thời khi

1https://www.facebook.com/groups/CNTT.NUCE/

Page 2: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

định.

+ Dữ liệu không bị mất đi khi tắt máy.

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ệntử ?

- Gồm 5 bước :1.Lập công thức cho bài toán2.Chọn ra phương pháp giải tốt nhất3.Lập sơ đồ thuật toán4.Viết chương trình bằng ngôn ngữ lập trình5.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

Ví dụ :

(571)8=5.82+7.81+1.80=(377)10

(F5)16=15.161+5.160=(245)10

(FA5C)16=15.163+10.162+5.161+12.160=(64092)10

+ Ngoài ra còn có các dạng chuyển từ cơ số 10 sang cơ số 2, từ cơ số 10 sang cơ số 8… và các hệ đếm khác

+ 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ần1.Tiêu đề của chương trình

2https://www.facebook.com/groups/CNTT.NUCE/

Page 3: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

Program tenchuongtrinh;2.Khai báo

UsesLableConstVarTypeFunctionProcedure

3.Thân chương trìnhBegin

{….}End.

- Ví dụ : viết chương trình tính diện tích hình tròn bán kính RProgram VD;Const PI=3.14;Var R,S :real;Begin

Write(‘Nhap ban kinh : ‘);readln(R);S:=PI*R*R;Writeln(‘Dien tich hinh tron la : ‘,S:6:1);Readln;

End.

Câu 6 : Viết biểu thức bằng ngôn ngữ lập trình pascal

Ví dụ :

Y=sin(α)+arctg(β)+1

√A2+√1+A2+√1+B2+A2

Viết lại thành :3

https://www.facebook.com/groups/CNTT.NUCE/

Page 4: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

Y:=sin(alpha)+arctan(beta)+1/sqrt(sqr(A)+sqrt(1+sqr(A)+sqrt(1+sqr(B)+sqr(A))))

Câu 7 : Nêu các vòng lặp xác định mà em đã biết ? cho ví dụ ?

- Có 2 vòng lặp xác định :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 <việc>- Ví dụ 1 : Viết ra màn hình các số từ 50->24, mỗi

số nằm trên 1 dòngVar i:integer;Begin

For i:=50 downto 24 doWriteln(i);

Readln;End.

- Ví dụ 2 : Viết ra màn hình các chữ cái từ ‘a’->’z’ mỗi chữ cái cách nhau một dấu cách.Var i:char;Begin

For i:=’a’ to ‘z’ doWrite(I,’ ‘);

Readln;End.

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- Khác nhau :

4https://www.facebook.com/groups/CNTT.NUCE/

Page 5: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

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 Booleancó 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.

- Ví dụ : tính tổng các số từ 1->N

Repeat…until… While…do…S:=0;i:=1;While (i<=N) do Begin S:=S+i; i:=i+1; end;

S:=0;i:=1;Repeat S:=S+i; i:=i+1;Until i>N;

5https://www.facebook.com/groups/CNTT.NUCE/

BD

Công việc

Biểuthức

KT

Đ

SCông việc

KT

BD

Đ

Biểuthức

S

Page 6: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

- Chú ý : + Ngoài ra còn có các câu so sánh giữa vòng lặp for và while, giữa for và repeat.+ 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ặpfor,while,repeat sau đó viết lại đoạn chươngtrình trên bằng vòng lặp khác. Ví dụ từ repeatviết lại bằng while+ Dạng tiếp theo cho sơ đồ thuật toán và viết lạibằ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áo1.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ếpVar 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ếpType PT:array[1..5] of real;

6https://www.facebook.com/groups/CNTT.NUCE/

Page 7: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

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ụ

- Khai báo :Type tenkieubanghi=record S1:T1;

S2:T2; ….. Sn:Tn; End;Var bien:tenkieubanghi;Trong đó : T1,T2,...Tn là các mô tả kiểu tương ứng S1,S2,…Sn là danh sách các trường

- Ví dụ :Type sinhvien=record Ht:string[30]; Dt:array[1..20] of real; DTB:real; End;Var sv:array[1..50] of sinhvien;

Câu 11 : Đưa ra các thủ tục để ghi dữ liệu cho tệp ? choví dụ

1.Mở tệp để ghiAssign(bientep,tentep);Rewrite(bientep);

7https://www.facebook.com/groups/CNTT.NUCE/

Page 8: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

2.Ghi các giá trị vào tệpWrite(Bientep,item1,item2,…,itemN);

3.Đóng tệpClose(bientep);- Ví dụ : Tạo một tệp chứa các số nguyên từ 1->100

ghi dưới dạng nguyen.datVar f:file of integer; i:integer;Begin Assign(f,’nguyen.dat’); Rewrite(f); For i:=1 to n do Write(f,i); Close(f);End.

Câu 12 : Đưa ra các thủ tục để đọc dữ liệu cho tệp ? choví dụ

1.Mở tệp để đọcAssign(bientep,tentep);Reset(bientep);

2.Đọc dữ liệu từ tệpRead(bientep,var1,var2,…,varN);

3.Đóng tệpClose(bientep);- Ví dụ : Cho tệp nguyen.dat chứa các số nguyên.

Đọc phần tử thứ nhất và phần từ thứ 3 gán vào 2 biến a và bVar f:file of integer; a,b:integer;

8https://www.facebook.com/groups/CNTT.NUCE/

Page 9: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

Begin Assign(f,’nguyen.dat’); Reset(f); While not eof(f) do Begin Read(f,a,b,b); End; Close(f);End.

Câu 13 : Đưa ra các thủ tục để ghi dữ liệu cho tệp văn bản ?

1.Mở tệp để ghiAssign(bientep,tentep);Rewrite(bientep);

2.Ghi các giá trị vào tệpWrite(bientep,item1,item2,…,itemN);Writeln(bientep,item1,item2,…,itemN);Writeln(bientep);

3.Đóng tệpClose(bientep);

Câu 14 : Đưa ra các thủ tục để đọc dữ liệu cho tệp văn bản ?

1.Mở tệp để đọcAssign(bientep,tentep);Reset(bientep);

2.Đọc dữ liệu từ tệpRead(bientep,var1,var2,…,varN);Readln(bientep,var1,var2,…,varN);Readln(bientep);

9https://www.facebook.com/groups/CNTT.NUCE/

Page 10: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

3.Đóng tệpClose(bientep);

Câu 15 : Nêu các phép toán trong tập hợp ? cho ví dụ

Ví dụ : cho 2 tập A:=[1..10,15..25]; B:=[8..17,24..31];

Có 6 phép toán trong tập hợp

1.Phép gán2.Phép giao

C:=A*B=[8..10,15..17,24..25];3.Phép hợp

C:=A+B=[1..31];4.Phép hiệu

C:=A-B=[1..7,18..23];C:=B-A=[11..14,26..31];

5.Phép thử thuộc về4 in A = TRUE

6.Phép so sánh : >,<,<>,=- Không có phép so sánh >= hoặc <=- Ví dụ : A:=[3,4,5]; B:=[3,4,5] A=B

Chú ý : Dạng đề bài cho 2 tập hợp A=[…] và B=[…] và bắttìm tập C bằng các phép toán trên tập hợp thì chỉ có 3phép toán : Hợp, giao, hiệu. Riêng đối với phép hiệuthì có hiệu của A cho B và hiệu của B cho A

C:=A*B C:=A+B C:=A-B C:=B-A

10https://www.facebook.com/groups/CNTT.NUCE/

Page 11: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

Câu 16 : Trình bày cấu trúc chung (hoặc so sánh) củachương trình con dạng hàm và thủ tục ? cho ví dụ

Procedure FunctionProcedure tenthutuc(Khaibao cac tham so hinh thucneu co);{Khai báo các hằng, biến…}Begin {Thân chương trìnhcon}End.

Function tenham(Khai baocac tham so hinh thuc neuco):kiểu giá trị hàm;{Khai báo các hằng, biến…}Begin {Thân chương trìnhcon}End.

+ Không trả lại kết quảthông qua tên của nó.+ Không thể viết trong cácbiểu thức.

+ Trả lại cho một giá trịkết quả vô hướng thông quatên của nó.+ Được sử dụng trong cácbiểu thức.

Ví dụ :

Procedure FunctionProceduredientich(r:real;vardt:real);Begin dt:=3.14*r*r;end;

Function dt(r:real):real;Begin dt:=3.14*r*r;End;

+ Ngoài ra còn có các dạng bài tập như : viết chươngtrình tính chu vi và diện tích của một hình nào đó vd :hình chữ nhật, tam giác. Đối với bài tập dạng này nênviết chương trình con dạng hàm hoặc thủ tục có tham số.

11https://www.facebook.com/groups/CNTT.NUCE/

Page 12: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

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

Var bk,S,P:real;

Procedure dientich(r:real; var dt,cv:real);

Const PI=3.14;

Begin

dt:=PI*r*r;

cv:=PI*r*2;

End;

Begin

Write(‘Nhap ban kinh : ‘);readln(bk);

Dientich(bk,S,P);

Writeln(‘Dien tich la : ‘,S:6:1,’ Chu vi la :‘,P:6:1);

End.

Trong đó : r là tham trị

Dt,cv là các tham biến

Cả r,dt,cv đều là các tham số hình thức

Cả bk,S,P đều là các tham số thực

Tham trị Tham biến+ là tham số hình thứctrong phần tiêu đề củachương trình con không đặt

+ là tham số hình thứctrong phần tiêu đề củachương trình con được đặt

12https://www.facebook.com/groups/CNTT.NUCE/

Page 13: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

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ươngtrình con và khi ra khỏichương trình con đó chúngkhông thay đổi giá trị.

sau từ khóa var.+ Các tham số thực phải làcác biến, không được phéplà giá trị. Chúng có thểthay đổi trong chươngtrình con và khi ra khỏichươ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 khaibáo trong chương trìnhchính, chúng có thể dung ởmọi nơi trong chươngtrình.

+ là các biến được khaibáo trong chương trình convà nó chỉ có tác dụngtrong phạm vi chương trìnhcon đó. Khi chương trìnhcon kết thúc thì biến nàymất tác dụng.

+ Dạng tiếp theo là cho đoạn chương trình sau đó tìmkết quả khi chạy đoạn chương trình đó

13https://www.facebook.com/groups/CNTT.NUCE/

Page 14: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

Phần B: Bài tậpBài 1 : Cho dãy x1,x2…xn. Tính giá trị trung bình củadãyvar i,n : integer; x:array[1..100] of real; tong : real;begin write('n = ');readln(n); for i:=1 to n do begin write('x[',i,']= '); readln(x[i]); end; for i:=1 to n do tong:=tong+x[i]; writeln('TB = ',tong/n); readln; end.

Bài 2 : Cho dãy x1,x2…xn. Tác dãy trên thành 2 dãy : 1dãy gồm các phần tử >=0, 1 dãy gồm các phần tử <0var i,n,k,l : integer; x,y,z : array[1..100] of real;beginwrite('Nhap n : ');readln(n);for i:=1 to n do begin write('x[',i,'] = '); readln(x[i]); end;for i:=1 to n do if x[i]>=0 then begin k:=k+1; y[k]:=x[i]; end

14https://www.facebook.com/groups/CNTT.NUCE/

Page 15: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD else begin l:=l+1; z[l]:=x[i]; end; Writeln('Day ca phan tu >=0 la :'); for i:=1 to k do writeln('y[',i,'] = ',y[i]:4:1); Writeln('Day ca phan tu <0 la :'); for 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ầntử >=0 về đầu, phần tử <0 về cuối, trật tự các phần tửkhông thay đổivar i,n,k : integer; x,y : array[1..100] of real;beginwrite('Nhap n : ');readln(n);for i:=1 to n do begin write('x[',i,'] = '); readln(x[i]); end;for i:=1 to n do if x[i]>=0 then begin k:=k+1; y[k]:=x[i]; end; for i:=1 to n do if x[i]<0 then begin k:=k+1; y[k]:=x[i]; end;

15https://www.facebook.com/groups/CNTT.NUCE/

Page 16: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD for i:=1 to k do writeln('y[',i,'] = ',y[i]:4:1); readln; end.

Bài 4 : Cho dãy x1,x2…xn. Xóa phần tử xkvar i,n,k : integer; x,y : array[1..100] of real;beginwrite('Nhap n : ');readln(n);for i:=1 to n do begin write('x[',i,'] = '); readln(x[i]); end;write('Nhap vi tri k :');readln(k);for i:=k to n-1 do x[i]:=x[i+1];for i:=1 to n-1 do writeln('x[',i,']= ',x[i]:4:1);readln;end.

Bài 5 : Cho dãy x1,x2…xn. Chèn M vào vị trí kCách 1 :var i,n,k,m : integer; x,y : array[1..100] of real;beginwrite('Nhap n : ');readln(n);for i:=1 to n do begin write('x[',i,'] = '); readln(x[i]); end;write('Nhap vi tri k :');readln(k);write('Nhap so can chen M :');readln(m);for i:=1 to n+1 doif i<k then

16https://www.facebook.com/groups/CNTT.NUCE/

Page 17: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD y[i]:=x[i]else if i=k then y[i]:=melse y[i]:=x[i-1];for i:=1 to n+1 do writeln('y[',i,']= ',y[i]:4:1);readln;end.

Cách 2 : Dino

uses crt;var i,k,m,n:integer; a:array[1..100] of integer;Begin clrscr; write('Nhap so phan tu day: '); readln(n); For i:=1 to n do begin write('A[',i,']= '); readln(a[i]); end; write('Nhap vi tri k: '); readln(k); write('Nhap so m: '); readln(m); for i:=n downto k do a[i+1]:=a[i]; a[k]:=m; writeln('Day sau khi chen la: '); for i:=1 to n+1 do write(a[i]:4); readln;End.

Bài 6 : Kiểu mảng - Cho bảng sau :

STT Họ tên Điểm

17https://www.facebook.com/groups/CNTT.NUCE/

Page 18: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

1 ….. m1..n

1.Tính điểm trung bình của từng sinh viên2.Tìm ra những sinh viên có điểm trung bình cao nhất3.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

Giải :var n,m,i,j,k :integer; ht:array[1..20] of string[20]; diem:array[1..20,1..10] of real; tong,tb:array[1..20] of real; tg,tg2,s,max:real; tg1:string[20];begin write('Nhap n : ');readln(n); write('Nhap m : ');readln(m); for i:=1 to n do begin write('HTSV ',i,' la '); readln(ht[i]); for j:=1 to m do begin write('DT mon ',j,' la '); readln(diem[i,j]); end; end; for i:=1 to n do begin tong[i]:=0; for j:=1 to m do tong[i]:=tong[i]+diem[i,j]; tb[i]:=tong[i]/m; end; max:=tb[1]; for i:=1 to n do

18https://www.facebook.com/groups/CNTT.NUCE/

Page 19: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD if tb[i]>max then max:=tb[i]; write('Danh sach cac hoc sinh co TB max bang ',max:6:1,' la :'); for i:=1 to n do if tb[i]=max then write(ht[i],', '); for i:=1 to n-1 do for k:=i+1 to n do if tb[i]>tb[k] then begin tg:=tb[i]; tb[i]:=tb[k]; tb[k]:=tg; tg1:=ht[i]; ht[i]:=ht[k]; ht[k]:=tg1; for j:=1 to m do begin tg2:=diem[i,j]; diem[i,j]:=diem[k,j]; diem[k,j]:=tg2; end; end; writeln('Danh sach sau khi sap xep la :'); for i:=1 to n do begin writeln; write(ht[i]); for j:=1 to m do write(' ',diem[i,j]:4:1,' '); end; readln; end.

Bài 7 : Cho ma trận Anxm, tính tổng từng hàng, từng cộtcủa ma trậnvar i,m,n,j : integer;

19https://www.facebook.com/groups/CNTT.NUCE/

Page 20: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD a:array[1..10,1..10] of real; b1:array[1..10] of real; b2:array[1..10] of real;beginwrite('Nhap so hang : ');readln(n);write('Nhap so cot : ');readln(m);for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']= '); readln(a[i,j]); end;for i:=1 to n do b1[i]:=0;for i:=1 to m do b2[i]:=0;for i:=1 to n do for j:=1 to m do begin b1[i]:=b1[i]+a[i,j]; b2[j]:=b2[j]+a[i,j]; end;for i:=1 to n do begin writeln; for j:=1 to m do write(a[i,j]:4:1,' '); end;writeln;writeln('Tong tung hang la : ');for i:=1 to n do writeln('Hang ',i,'= ',b1[i]:4:1);writeln('Tong tung cot la : ');for j:=1 to m do writeln('Cot ',j,'= ',b2[j]:4:1);readln;end.

20https://www.facebook.com/groups/CNTT.NUCE/

Page 21: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

Bài 8 : Cho ma trận Anxm, xóa hàng thứ k của ma trận.var i,m,n,k,j:integer; a:array[1..100,1..100] of real;begin write('Nhap so hang :');readln(n); write('Nhap so cot :');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']= '); readln(a[i,j]); end; write('Nhap hang can xoa :');readln(k); for j:=1 to m do for i:=k to n-1 do a[i,j]:=a[i+1,j]; for i:=1 to n-1 do for j:=1 to m do writeln('a[',i,',',j,']= ',a[i,j]:4:1);readln;end.

Bài 9 : Cho ma trận Anxm tìm giá trị lớn nhất của matrận, xóa hàng đầu tiên chứa giá trị lớn nhất đó.var n,m,i,j,max,k : integer; x:array[1..10,1..10] of integer;begin write('Nhap n : ');readln(n); write('Nhap m : ');readln(m); for i:=1 to n do for j:=1 to m do begin write('x[',i,',',j,']= '); readln(x[i,j]); end; k:=1; max:=x[1,1]; for i:=1 to n do

21https://www.facebook.com/groups/CNTT.NUCE/

Page 22: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD for j:=1 to m do if x[i,j]>max then begin max:=x[i,j]; k:=i; end; for j:=1 to m do for i:=k to n-1 do x[i,j]:=x[i+1,j]; for i:=1 to n-1 do begin writeln; for j:=1 to m do write(x[i,j],' ') ; end; readln; end.

Bài 10: Cho ma trận Anxm tìm giá trị lớn nhất của matrận, xóa cột đầu tiên chứa giá trị lớn nhất đó.var i,j,m,n,k,max:integer; a:array[1..10,1..10] of integer;begin write('Nhap n : ');readln(n); write('Nhap m : ');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']= '); readln(a[i,j]); end; k:=1; max:=a[1,1]; for j:=1 to m do for i:=1 to n do if a[i,j]>max then begin max:=a[i,j];

22https://www.facebook.com/groups/CNTT.NUCE/

Page 23: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD k:=j; end; for i:=1 to n do for j:=k to m-1 do a[i,j]:=a[i,j+1]; for i:=1 to n do begin writeln; for j:=1 to m-1 do write(a[i,j],' '); end; readln; end.

Bài 11: Cho ma trận Anxm và vecto B[b1,b2,…,bn] (có nphần tử) tìm giá trị nhỏ nhất của ma trận, chèn vecto Bvào cột cuối cùng chứa giá trị nhỏ nhất đóvar i,j,k,n,m:integer; a : array[1..50,1..50] of real; y : array[1..50,1..50] of real; b:array[1..100] of real; min:real;begin write('Nhap so hang: ');readln(n); write('Nhap so cot : ');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']= '); readln(a[i,j]); end; min:=a[1,1];

for i:=1 to n do for j:=1 to m do if min>a[i,j] then min:=a[i,j]; writeln('Gia tri nho nhat la : ',min:4:1);

23https://www.facebook.com/groups/CNTT.NUCE/

Page 24: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD for j:=1 to m do for i:=1 to n do if min=a[i,j] then k:=j;

writeln('vi tri cuoi cung o cot :',k);

writeln('Nhap ma tran vecto B'); for i:=1 to n do begin write('b[',i,']= '); readln(b[i]); end; for i:=1 to n do for j:=1 to m+1 do if j<k+1 then y[i,j]:=a[i,j] else if j=k+1 then y[i,j]:=b[i] else y[i,j]:=a[i,j-1]; for i:=1 to n do begin writeln; for j:=1 to m+1 do

write(y[i,j]:4:1,' '); end; readln; end.

Bài 12: Cho ma trận Anxm và vecto B[b1,b2,…,bm] (có mphần tử). Chèn vecto B vào hàng thứ kvar i,j,k,n,m:integer; a : array[1..50,1..50] of real; y : array[1..50,1..50] of real; b:array[1..100] of real;begin

24https://www.facebook.com/groups/CNTT.NUCE/

Page 25: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD write('Nhap so hang: ');readln(n); write('Nhap so cot : ');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']= '); readln(a[i,j]); end; write('Nhap vi tri hang can chen : '); readln(k); If (1<=k) and (k<=n+1) then begin writeln('Nhap ma tran vecto B'); for i:=1 to m do begin write('b[',i,']= '); readln(b[i]); end; for j:=1 to m do for i:=1 to n+1 do if i<k then y[i,j]:=a[i,j] else if i=k then y[i,j]:=b[j] else y[i,j]:=a[i-1,j]; for i:=1 to n+1 do begin writeln; for j:=1 to m do

write(y[i,j]:4:1,' '); end; end else writeln('K ko co thuoc hang can chen ');

readln; end.

25https://www.facebook.com/groups/CNTT.NUCE/

Page 26: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

Bài 13: Cho ma trận Anxm tìm tổng phần tử dương trong tam giác trên và tích các phần tử âm trong tam giác dưới. So sánh tổng và tích

var i,j,n,k:integer; a:array[1..50,1..50] of real; tong,tich:real;begin write('Nhap so hang ma tran NxN : '); readln(n); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']= '); readln(a[i,j]); end; tong:=0; for i:=1 to n-1 do for j:=i+1 to n do if a[i,j]>=0 then tong:=tong+a[i,j]; tich:=1; for i:=2 to n do for j:=1 to i-1 do if a[i,j]<0 then k:=k+1; if k=0 then tich:=0 else for i:=2 to n do for j:=1 to i-1 do if a[i,j]<0 then tich:=tich*a[i,j]; for i:=1 to n do begin writeln; for j:=1 to n do

26https://www.facebook.com/groups/CNTT.NUCE/

Page 27: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD write(a[i,j]:4:1,' '); end; writeln; writeln('tich cac pt am tam giac duoi la : ',tich:4:1); writeln('tong cac pt tam giac tren la : ',tong:4:1); if tong>tich then writeln(' Tong lon hon tich') else if tong=tich then writeln(' Tong bang tich ') else writeln('Tong be hon tich'); readln; end.

Bài 14 : Kiểu bản ghi - Cho bảng sau :

STT Họ tên Điểm danh1 ….. m

1…n

1.Đếm số buổi đi học, nghỉ học có phép, nghỉ họckhông phép

2.Đưa ra những sinh viên không được thi biết điềukiện không được thi là số buổi nghỉ học không phép>= 20%m

Giải : (Dino)uses crt;type sinhvien=record ten:string[20]; dd:array[1..20] of char; dh,cp,kp:integer; tt:string[15]; end;var m,n,i,j:integer; sv:array[1..100] of sinhvien;Begin

27https://www.facebook.com/groups/CNTT.NUCE/

Page 28: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD clrscr; write('Nhap so hoc sinh: '); readln(n); write('Nhap so buoi hoc: '); readln(m); writeln('Nhap thong tin di hoc cua tung sinh vien:'); for i:=1 to n do with sv[i] do begin writeln('Hoc sinh thu ',i); write('Ho ten: '); readln(ten); dh:=0; kp:=0; cp:=0; for j:=1 to m do begin write('Buoi ',j,': '); readln(dd[j]); if dd[j]='k' then kp:=kp+1 else if dd[j]='p' then cp:=cp+1 else dh:=dh+1; end; 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.

28https://www.facebook.com/groups/CNTT.NUCE/

Page 29: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

Bài 15 : Cho trước tệp văn bản TEN.TXT ghi họ tên sinhviên của một lớp, trong đó họ tên mỗi người chiếm 1dòng và tệp văn bản DIEMDANH.TXT ghi kết quả điểm danhcủ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êntiế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ônglý 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 baonhiê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ấucá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

Giải :type sinhvien=record ht:string[30]; diemdanh:array[1..10] of char; dh:integer; nh:integer; cp:integer;

29https://www.facebook.com/groups/CNTT.NUCE/

Page 30: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD end;var sv:array[1..20] of sinhvien; sv1:array[1..20] of sinhvien; i,j,m,n,k,t,max:integer; f1,f2,f3:Text;begin assign(f1,'ten.txt'); reset(f1); i:=0; while not eof(f1) do begin i:=i+1; readln(f1,sv[i].ht); end; n:=i; close(f1);

assign(f2,'diemdanh.txt'); reset(f2); i:=0; while not eof(f2) do begin i:=i+1; j:=0; while not eoln(f2) do begin j:=j+1; read(f2,sv[i].diemdanh[j]); end; readln(f2); end; m:=j; close(f2);

for i:=1 to n do begin sv[i].dh:=0; sv[i].cp:=0; sv[i].nh:=0;

30https://www.facebook.com/groups/CNTT.NUCE/

Page 31: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD for j:=1 to m do if sv[i].diemdanh[j]='c' then sv[i].dh:=sv[i].dh+1 else if sv[i].diemdanh[j]='v' then sv[i].cp:=sv[i].cp+1 else sv[i].nh:=sv[i].nh+1; end;

max:=sv[1].dh; for i:=1 to n do if sv[i].dh>max then max:=sv[i].dh; for i:=1 to n do if sv[i].dh=max then begin t:=t+1; sv1[t]:=sv[i]; end;

write('Thong ke so buoi di hoc cua sinh vien'); for i:=1 to n do begin writeln; write(i,' ',sv[i].ht:10,' '); for j:=1 to m do write(sv[i].diemdanh[j],' '); write(sv[i].dh,' ',sv[i].nh,' ',sv[i].cp); end;

writeln; write('Co ',t,' sinh vien di hoc cham chi nhat : '); for i:=1 to t do begin writeln; write(i,' ',sv1[i].ht:10); end;

assign(f3,'ketqua.txt');

31https://www.facebook.com/groups/CNTT.NUCE/

Page 32: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD rewrite(f3); for i:=1 to n do begin write(f3,i,' ',sv[i].ht:10,' '); write(f3,sv[i].dh:1,' ',sv[i].cp:1,' ',sv[i].nh:1); writeln(f3); end; for k:=1 to t do writeln(f3,sv1[k].ht); write(f3,'so sv di hoc cham chi nhat la : ',t); close(f3); readln; end.

Bài 16 : Cho trước tệp văn bản TEN.TXT ghi họ tên cácchủ hộ của một phường, trong đó mỗi dòng ghi họ tên củamột chủ hộ và tệp văn bản SODIEN.TXT ghi số lượng điệncác hộ tiêu thụ trong tháng, trong đó số lượng điệntiêu thụ của mỗi hộ ghi trên 1 dòng, số lượng điện cácthá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áchsau :

- Mỗi hộ gia đình chiếm 1 dòng gồm các thông tinsau: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 ítnhất trong phường

32https://www.facebook.com/groups/CNTT.NUCE/

Page 33: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

- 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 ítnhất, họ tên mỗi chủ hộ viết trên 1 dòng

Giải :type chuho=record ht:string[30]; sodien:array[1..12] of real; tb:real; end;var ch:array[1..50] of chuho; ch1:array[1..50] of chuho; i,j,m,n,t,k:integer; min,tong:real; f1,f2,f3:text;begin assign(f1,'ten.txt'); reset(f1); i:=0; while not eof(f1) do begin i:=i+1; readln(f1,ch[i].ht); end; n:=i; close(f1);

assign(f2,'sodien.txt'); reset(f2); i:=0; while not eof(f2) do begin i:=i+1; j:=0; while not eoln(f2) do begin j:=j+1; read(f2,ch[i].sodien[j]);

33https://www.facebook.com/groups/CNTT.NUCE/

Page 34: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD end; readln(f2); end; m:=j; close(f2);

for i:=1 to n do begin tong:=0; for j:=1 to m do tong:=tong+ch[i].sodien[j]; ch[i].tb:=tong/m; end;

min:=ch[1].tb; for i:=1 to n do if ch[i].tb<min then min:=ch[i].tb;

t:=0; for i:=1 to n do if ch[i].tb=min then begin t:=t+1; ch1[t]:=ch[i]; end;

assign(f3,'ketquatiendien.txt'); rewrite(f3); for i:=1 to n do begin write(f3,i,' ',ch[i].ht:10,' '); write(f3,ch[i].tb:3:1); writeln(f3); end; writeln(f3,'so dien tieu thu it nhat trong phuong la : ',min:3:1); writeln(f3,'Ten cac chu ho co luong dien tieu thu it nhat la :');

34https://www.facebook.com/groups/CNTT.NUCE/

Page 35: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD for k:=1 to t do writeln(f3,k,' ',ch1[k].ht:10); close(f3); readln; end.

Bài 17 : Vẽ sơ đồ thuật toán và viết chương trìnhPascal thực hiện các công việc cho bài toán sau :

Cho một danh sách lớp :

TT Họ tên Kết quả họctập

Phân loại

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ôngthức :Phân loại bằng A nếu kết quả học tập >=8Phân loại bằng B nếu kết quả học tập >=6Phân loại bằng C nếu kết quả học tập >=5Phân loại bằng D nếu kết quả học tập >=4Phân loại bằng E nếu kết quả học tập < 4

2.Ghi danh sách ra tệp3.Mở tệp, đọc dữ liệu vào bộ nhớ trong4.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ại5.Hiện lại danh sách sau khi sắp xếp

Giải :program bailam;uses crt;type sinhVien=recordhoTen: string[50];ketQua: real;loai: char;end;

35https://www.facebook.com/groups/CNTT.NUCE/

Page 36: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDvar sv: array[1..100] of sinhVien;n: integer;

procedure nhap;var i,m: integer;f: file of sinhVien;ds: array[1..100] of sinhVien;begin{= Nhap danh sach sinh vien =}write('Nhap so sinh vien: ');readln(m);writeln('Nhap thong tin sinh vien:');for i:=1 to m dowith ds[i] dobeginwriteln('* Sinh vien thu ',i);write('Ho ten: ');readln(hoTen);write('Ket qua hoc tap: ');readln(ketQua);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'else loai:='E';end;{= Ghi danh sach ra tep DANHSACH.INP =}assign(f,'DANHSACH.inp');rewrite(f);for i:=1 to m dowrite(f,ds[i]);close(f);end;

procedure doc;var i: integer;f: file of sinhVien;begin{= Doc du lieu tu tep DANHSACH.INP =}

36https://www.facebook.com/groups/CNTT.NUCE/

Page 37: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDassign(f,'DANHSACH.inp');reset(f);i:=0;while not eof(f) dobegini:=i+1;read(f,sv[i]);end;n:=i;end;

procedure sapXep;var i,j: integer;tg: sinhVien;begin{= Sap xep danh sach =}for i:=1 to n-1 dofor j:=i+1 to n doif sv[i].loai > sv[j].loai thenbegintg:=sv[i];sv[i]:=sv[j];sv[j]:=tg;end;end;

procedure hienThi;var i: integer;beginfor i:=1 to n dowith sv[i] dowriteln(i,' ',hoTen:30,' ',ketQua:6:2,' ',loai:3);end;

beginclrscr;nhap;doc;sapXep;

37https://www.facebook.com/groups/CNTT.NUCE/

Page 38: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDhienThi;readlnend.

Bài 18: Cho ma trận Anxm, vẽ sơ đồ thuật toán và viết chương trình có sử dụng chương trình con để thực hiện :

- 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; i,j,m,n,k,t,l:integer; f1,f2,f3:text; tg:real;procedure nhap;begin write('Nhap n : ');readln(n); write('Nhap m : ');readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']= '); readln(a[i,j]); end;

assign(f1,'abc.txt'); rewrite(f1); for i:=1 to n do begin for j:=1 to m do if j<m then write(f1,a[i,j]:4:1,' ') else

38https://www.facebook.com/groups/CNTT.NUCE/

Page 39: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD write(f1,a[i,j]:4:1); writeln(f1); end; close(f1);writeln('Ma tran ghi ra la ');for i:=1 to n do begin for j:=1 to m do write(a[i,j]:4:1,' '); writeln; end;end;

procedure doc;begin assign(f2,'abc.txt'); reset(f2); i:=0; while not eof(f2) do begin i:=i+1; j:=0; while not eoln(f2) do begin j:=j+1; read(f2,b[i,j]) end; readln(f2) end; t:=i;k:=j; close(f2); writeln; write('Ma tran doc vao la '); for i:=1 to t do begin writeln; for j:=1 to k do write(b[i,j]:4:1,' ');

39https://www.facebook.com/groups/CNTT.NUCE/

Page 40: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD end;end;

procedure sapxep;begin for i:=1 to t do for j:=1 to k-1 do for l:=j+1 to k do if b[i,j]>b[i,l] then begin tg:=b[i,j]; b[i,j]:=b[i,l]; b[i,l]:=tg; end;end;

procedure hienra;begin writeln; writeln('Ma tran sau khi sap xep la :'); for i:=1 to t do begin for j:=1 to k do write(b[i,j]:4:1); writeln; end;

assign(f3,'Kq.txt'); rewrite(f3); for i:=1 to t do begin for j:=1 to k do write(f3,b[i,j]:4:1); writeln(f3); end; close(f3);end;

begin

40https://www.facebook.com/groups/CNTT.NUCE/

Page 41: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDnhap;doc;sapxep;hienra;readln;end.

Bài 19: Kết quả thi học kỳ của một lớp sinh viên đượccho trong 2 tệp văn bản: một tệp hoten.txt chứa họ vàtên của các sinh viên của một lớp trong đó họ tên mỗisinh viên chiếm một dòng và tệp văn bản diem.txt ghiđiểm trung bình (DTB) của mỗi sinh viên, trong đó điểmcủa mỗi sinh viên ghi trên một dòng.Viết chương trình để:

- Tìm xếp loại của từng sinh viên biếtNế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ếtNếu DTB>=9, sinh viên sẽ được học bổng 240000Nếu 8<=DTB<9, sinh viên sẽ được học bổng 180000Nếu 7<=DTB<8, sinh viên sẽ được học bổng 120000Nế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à rafile 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ếploại, 2 dấu cách, Học bổng của từng sinh viên

Giải:program bailam;uses crt;type sinhvien=record

41https://www.facebook.com/groups/CNTT.NUCE/

Page 42: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDht: string[50];dtb: real;xepLoai: string[20];hocBong: longint;end;var sv: array[0..100] of sinhvien;tg: sinhvien;d, i, j, m, n: integer;f: text;beginclrscr;

{===Lay du lieu tu tep====}assign(f,'hoten.txt');reset(f);n:=0;while (not eof(f)) dobegininc(n);readln(f,sv[n].ht);end;close(f);assign(f,'diem.txt');reset(f);for i:=1 to n doreadln(f,sv[i].dtb);close(f);

{=== Xep Loai va Tinh Hoc Bong ===}for i:=1 to n dowith sv[i] doif dtb>=9 thenbeginxepLoai:='Xuat Sac';hocBong:=240000;endelse if dtb>=8 thenbeginxepLoai:='Gioi';

42https://www.facebook.com/groups/CNTT.NUCE/

Page 43: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDhocBong:=180000;endelse if dtb>=7 thenbeginxepLoai:='Kha';hocBong:=120000;endelsebeginxepLoai:='Trung Binh';hocBong:=0;end;

{=== Sap Xep ===}for i:=1 to n-1 dofor j:=i+1 to n doif sv[i].dtb<sv[j].dtb thenbegintg:=sv[i];sv[i]:=sv[j];sv[j]:=tg;end;

{=== In Ket Qua Ra File ===}assign(f,'ketqua.txt');rewrite(f);writeln(f,'KET QUA THI HOC KY CUA LOP:');for i:=1 to n dowith sv[i] dowriteln(f,i:3,' ',ht:20,' ',dtb:6:1,xepLoai:15,' ',hocBong);close(f);

{===Dua ket qua ra man hinh===}writeln('KET QUA THI HOC KY CUA LOP:');for i:=1 to n dowith sv[i] dowriteln(i:3,' ',ht:20,' ',dtb:6:1,xepLoai:15,' ',hocBong);readlnend.

43https://www.facebook.com/groups/CNTT.NUCE/

Page 44: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

Bài 20: Viết chương trình con tính chu vi, diện tích của đường tròn, hình chữ nhật, tam giácvar r,s,cv,dai,rong,s1,cv1,s2,cv2,t1,t2,t3:real;procedure tamgiac(x1,x2,x3:real;var CVtg,Stg:real);beginCVtg:=x1+x2+x3;Stg:=sqrt(CVtg/2*(CVtg/2-x1)*(CVtg/2-x2)*(CVtg/2-x3));writeln('Chu vi tam giac la : ',CVtg:6:1);writeln('Dien tich tam giac la : ',Stg:6:1);end;

procedure hcn(a:real;b:real;var Scn,CVcn:real);begin Scn:=a*b; CVcn:=a+b; writeln('Dien tich chu nhat la : ',Scn:6:1); writeln('Chu vi chu nhat la : ',CVcn:6:1);end;

procedure DT(bk:real;var DT,Chv:real);begin Chv:=3.14*bk*2; dt:=3.14*bk*bk; 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); DT(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); tamgiac(t1,t2,t3,cv2,s2); readln;

44https://www.facebook.com/groups/CNTT.NUCE/

Page 45: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDend.

Bài 21: Ngân hàng muốn được cung cấp một phần mềm môphỏng hoạt động của máy ATM, các thông tin cần quản lýnhư sau : Số PIN, số tài khoản, họ và tên, CMTND, ngàylàm thẻ, số dư. Hãy khai báo kiểu bản ghi (Record) chứacác thành phần nêu trên. Lập sơ đồ thuật toán và viếtchương trình bằng ngôn ngữ lập trình pascal thực hiệncác yêu cầu sau :

- 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ảntheo quy trình :

1.Yêu cầu nhập số PIN2.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ềncần rút.

3.Thông báo giao dịch thành côngGiải :type atm=record sopin:integer; sotk:integer; hoten:string[20]; cmtnd:string[10]; ngaylamthe:string[20]; sodu:real; end;var kh:array[1..50] of atm; i,j,n,PIN,k,PIN1,t,dem,dem1:integer; sotien:real;

45https://www.facebook.com/groups/CNTT.NUCE/

Page 46: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDprocedure nhap;begin write('Nhap so khach hang : ');readln(n); for i:=1 to n do begin write('Nhap so pin cua KH thu ',i,' : ');readln(kh[i].sopin); write('Nhap so tai khoan cua KH thu ',i,' : ');readln(kh[i].sotk); write('Nhap ho ten cua khach hang thu ',i,' : ');readln(kh[i].hoten); write('Nhap so cmtnd cua KH thu ',i,' : ');readln(kh[i].cmtnd); write('Nhap ngay lam the cua KH thu ',i,' : ');readln(kh[i].ngaylamthe); write('Nhap so du tai khoan cua KH thu ',i,' : ');readln(kh[i].sodu); end;end;

procedure laythongtin;begin writeln; writeln('Chuong trinh con lay tong tin khach hang tu so PIN'); write('Nhap so pin tai khoan : ');readln(PIN); dem:=0; for i:=1 to n do if PIN=kh[i].sopin then begin k:=i; dem:=dem+1; end; if dem<>0 then writeln('So du cua tai khoan la : ',kh[k].sodu:8:1) else writeln('Khong co tai khoan nao co so PIN nhu vay');end;

procedure ruttien;

46https://www.facebook.com/groups/CNTT.NUCE/

Page 47: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD begin writeln('Chuong trinh con rut tien'); write('Nhap so pin tai khoan : ');readln(PIN1); dem1:=0; for i:=1 to n do if PIN1=kh[i].sopin then begin t:=i; dem1:=dem1+1; end; if dem1<>0 then begin write('Nhap so tien can rut : ');readln(sotien); if sotien<=kh[t].sodu then begin kh[t].sodu:=kh[t].sodu-sotien; writeln('So tien con lai cua quy khach la : ',kh[t].sodu:8:1); writeln('Giao dich thanh cong'); end else writeln('So tien lon hon so du trong tai khoan'); writeln('Giao dich ko thanh cong'); end else writeln('Khong co so PIN nay'); end;

begin nhap; laythongtin; ruttien; readln;end.

Bà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 :

47https://www.facebook.com/groups/CNTT.NUCE/

Page 48: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

- 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ứ hai2.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

Giải : (Dino)uses crt;type mang=array[1..100,1..100] of integer;var a,b,t:mang; i,j,m,n,m1,n1:integer;Procedure nhap(var c:mang);Begin for i:=1 to m do for j:=1 to n do begin write('PT[',i,',',j,']= '); readln(c[i,j]); end;end;Procedure xuat(var c:mang);Begin for i:=1 to m do begin for j:=1 to n do write(c[i,j]:4); writeln; end;end;Procedure tong;Begin for i:=1 to m do for j:=1 to n do t[i,j]:=a[i,j]+b[i,j];

48https://www.facebook.com/groups/CNTT.NUCE/

Page 49: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDEnd;Begin clrscr; write('Nhap so hang ma tran: '); readln(m); write('Nhap so cot ma tran: '); readln(n); writeln('Nhap ma tran thu nhat: '); nhap(a); writeln('Nhap ma tran thu hai: '); nhap(b); writeln('Ma tran thu nhat la: '); xuat(a); writeln('Ma tran thu hai la: '); xuat(b); tong; writeln('Tong cua hai ma tran la: '); xuat(t); readln;End.

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 maso:string[15]; ten,diachi:string[20];

49https://www.facebook.com/groups/CNTT.NUCE/

Page 50: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD dt,hd,ngay:string[15]; end;var ho:array[1..100] of hodan; m,i,demsh,demsx,demkd:integer;Begin Clrscr; write('Nhap so ho dan: '); readln(m); writeln('Nhap thong tin cac ho dan: '); demsh:=0; demsx:=0; demkd:=0; for i:=1 to m do with ho[i] do begin writeln('Ho thu ',i); write('Ma so: '); readln(maso); write('Ho ten: '); readln(ten); write('Dia chi'); readln(diachi); write('Dien thoai: '); readln(dt); write('Loai hop dong: '); readln(hd); write('Ngay dang ky: '); readln(ngay); if hd='kd' then demkd:=demkd+1 else if hd='sx' then demsx:=demsx+1 else if hd='sh' then demsh:=demsh+1; end; 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 chi':20,'SDT':12); write('Sinh hoat':10);

50https://www.facebook.com/groups/CNTT.NUCE/

Page 51: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD for i:=1 to m do with ho[i] do if hd='sh' then begin write(ten:20,diachi:20,dt:12); writeln; end; writeln('______________________________________________________________'); write('Kinh doanh':10); for i:=1 to m do with ho[i] do if hd='kd' then begin write(ten:20,diachi:20,dt:12); writeln; end; writeln('______________________________________________________________'); write('San xuat':10); for i:=1 to m do with ho[i] do if hd='sx' then begin write(ten:20,diachi:20,dt:12); writeln; end; readln;End.

Bài 24: Cho bảng N môn họcTT Tên môn

họcLý thuyết Bài tập Tổng số

51https://www.facebook.com/groups/CNTT.NUCE/

Page 52: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

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 dungbả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 = recordstt:integer;ten:string[30];lt:integer;th:integer;ts:integer;end;var mon:array[1..100] of monhoc;m,i, tonglt,tongth,tong:integer;f1:file of monhoc;f2:text;ptlt,ptth:real;

BeginClrscr;write('Nhap so mon hoc: ');readln(m);writeln('Nhap thong tin tung mon hoc: ');assign(f1,'dulieu1.txt');rewrite(f1);for i:=1 to m dobegin

52https://www.facebook.com/groups/CNTT.NUCE/

Page 53: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDwith mon[i] dobeginwriteln('Mon thu: ',i);write('Ten mon hoc: ');readln(ten);write('So gio ly thuyet: ');readln(lt);write('So gio thuc hanh: ');readln(th);ts:=lt+th;end;write(f1,mon[i]);end;Reset(f1);for i:=1 to m do read(f1,mon[i]);tonglt:=0 ;tongth:=0;For i:=1 to m dobegintonglt:=tonglt+mon[i].lt;tongth:=tongth+mon[i].th;end;tong:=tonglt+tongth;ptlt:=(tonglt/tong)*100 ;ptth:=(tongth/tong)*100;assign(f2,'dulieu2.txt');rewrite(f2);writeln('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;

53https://www.facebook.com/groups/CNTT.NUCE/

Page 54: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDEnd.

Bài 25: Một cửa hàng sách quản lý sách với các thôngtin 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êutrên. Lập sơ đồ thuật toán và viết chương trình bằngngô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ímvà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áchcủa cửa hàng theo thứ tự giảm dần về số lượng

Giải : (Dino)

uses crt;type quyensach = recordmasach:string[20];ten:string[30];tacgia:string[25];theloai:string[20];namxb,sl:integer;end;var sach:array[1..100] of quyensach;m,n,i,j,dem:integer;temp:quyensach;f:text;Beginclrscr;Write('Nhap so quyen sach: ');readln(n);writeln('Nhap thong tin tung quyen sach: ');For i:=1 to n dowith sach[i] dobeginwriteln('Sach thu ',i);

54https://www.facebook.com/groups/CNTT.NUCE/

Page 55: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDwrite('Ma sach: ');readln(masach);write('Ten sach: ');readln(ten);write('Tac gia: ');readln(tacgia);write('Nam xuat ban: ');readln(namxb);write('So luong: ');readln(sl);end;write('Nhap so m: ');readln(m);writeln('Danh sach nhung quyen sach co so luong be hon ',m);writeln('STT':4,'Ten sach':20);for i:=1 to n doif sach[i].sl<m then writeln(i:4,sach[i].ten:20);assign(f,'sach.txt');rewrite(f);for i:=1 to n-1 dofor j:=i+1 to n doif sach[i].sl<sach[j].sl thenbegintemp:=sach[i];sach[i]:=sach[j];sach[j]:=temp;end;writeln(f,'STT':4,'Ten sach':20,'So luong':10);For i:=1 to n dowith sach[i] dowriteln(f,i:4,ten:20,sl:10);readln;close(f);

End.

Bài 26: Hồ sơ thông tin sinh viên gồm nhưng thành phầnsau :

55https://www.facebook.com/groups/CNTT.NUCE/

Page 56: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

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- Một chương trình con để tìm kiếm đưa ra thông tin

của sinh viên có mã sinh viên được nhập từ bànphím

- Một chương trình con tạo một file lưu thông tinhồ sơ sinh viên theo thứ tự giảm dần của năm sinh

Giải :

uses crt;type sinhvien=record msv:string[10]; ten,que:string[25]; ns:integer; gt:string[5]; end;var sv:array[1..100] of sinhvien; m,i,j:integer; f:text; temp:sinhvien;procedure nhap;begin Clrscr; write('Nhap so sinh vien: '); readln(m); writeln('Nhap thong tin sinh vien'); for i:=1 to m do with sv[i] do begin writeln('Sinh vien thu ',i); write('Ma SV: '); readln(msv);

56https://www.facebook.com/groups/CNTT.NUCE/

Page 57: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD write('Ho ten: '); readln(ten); write('Nam sinh: '); readln(ns); write('Que quan: '); readln(que); write('Gioi tinh: '); readln(gt);

end;end;Procedure tracuu;var kt:boolean; temp1:string[10]; x:integer;begin write('Nhap Ma sv can tra cuu: '); readln(temp1); kt:=false; for i:=1 to m do if sv[i].msv=temp1 then begin kt:=true; x:=i; end; if kt=true then with sv[x] do begin writeln('Thong tin hoc sinh co ma sv la ',temp1); writeln('Ho ten: ',ten); writeln('Nam sinh: ',ns); writeln('Gioi tinh: ',gt); writeln('Que quan: ',que); end else writeln('Ma sv ban vua nhap khong co');end;procedure ghitep;begin

57https://www.facebook.com/groups/CNTT.NUCE/

Page 58: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD assign(f,'abc.txt'); rewrite(f); for i:=1 to m-1 do for j:=i+1 to m do if sv[i].ns>sv[j].ns then begin temp:=sv[i]; sv[i]:=sv[j]; sv[j]:=temp; end; writeln(f,'STT':4,'Ho ten':25,'Nam sinh':10); {Minh chi hien thi tung nay,ai thich hien thi them thi them vao nhe} for i:=1 to m do with sv[i] do writeln(f,i:4,ten:25,ns:10); close(f);end;Begin Nhap; tracuu; ghitep; readln;End.

Bài 27: Cho trước danh sách tên các đội bóng tham giamùa giải và kết quả thi đấu giữa các đội. Kết quả thiđấu giữa các đội được ghi trong ma trận vuông gồm kếtquả thắng (3 điểm), hòa (1 điểm), thua (0 điểm) được tổchức như sau : Các phần tử thuộc đường chéo chính gánbằng 0, các phần tử aij khác có ý nghĩa :aij= 3 đội i thắng đội jaij= 1 đội i hòa đội jaij= 0 đội i thua đội jHãy viết chương trình để thực hiện các yêu cầu sau :

- Một chương trình con nhập dữ liệu từ bàn phím

58https://www.facebook.com/groups/CNTT.NUCE/

Page 59: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD

- Một chương trình con tính điểm của mỗi đội- Một chương trình con sắp xếp theo thứ tự của các

đội sau mùa giải theo thứ tự giảm dần.- Một chương trình con ghi kết quả vào tệp và một

chương trình con hiện ra màn hình theo định dạngsau :Dòng 1 : KET QUA BONG DADòng 2 : Số đội bóng tham gia mùa giảiCác dòng tiếp theo mỗi dòng ghi : STT, hai dấu cách, số điểm.

- Một chương trình chính gọi các chương trình conGiải :Uses crt;Var i,j,m,Temp1:integer; f1:text; Temp:string[25]; Doi:array[1..20] of string[25]; S:array[1..20] of integer; A:array[1..20,1..20] of integer;Procedure Nhap;Begin Write('Nhap so doi: '); Readln(m); For i:=1 to m do Begin Write('Ten doi ',i,': '); Readln(Doi[i]); End; Writeln('Nhap ket qua tung tran dau theo ma tran vuong: '); For i:=1 to m do For j:=1 to m do Begin Write('A[',i,j,']= '); Readln(A[i,j]); End;End;Procedure Tinhdiem;

59https://www.facebook.com/groups/CNTT.NUCE/

Page 60: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXDBegin Fillchar(S,Sizeof(s),0); {Gan tat ca phan tu S = 0} For i:=1 to m do For j:=1 to m do If i<>j then {Khong tinh duong cheo chinh} Begin If A[i,j]=3 then S[i]:=S[i]+3 Else If A[i,j]=1 then Begin S[i]:=S[i]+1; {Vi 2 doi hoa nhau nen sodiem ca 2 cung se tang len 1} S[j]:=S[j]+1; End Else S[j]:=S[j]+3; {A[i,j]=0 --> Doi J duoc 3 diem, I dc 0 diem} End;End;Procedure Sapxep;Begin For i:=1 to m-1 do For j:=i+1 to m do If S[i]<S[j] then Begin Temp:=Doi[i]; Doi[i]:=Doi[j]; Doi[j]:=Temp; Temp1:=S[i]; S[i]:=S[j]; S[j]:=Temp1; End;End;Procedure Ghitep;Begin Assign(f1,'Ketquathidau.txt'); Rewrite(f1); Writeln(f1,'KET QUA THI DAU'); Writeln(f1,'STT':4,'TEN DOI BONG':25,'SO DIEM':10); For i:=1 to m do

60https://www.facebook.com/groups/CNTT.NUCE/

Page 61: Dề cương Tin học dại cương PM

Góc học tập khoa CNTT - ĐHXD Begin Write(f1,i:4,Doi[i]:25,S[i]:10); Writeln(f1); End; Close(f1);End;Procedure Inra;Begin Writeln('KET QUA THI DAU'); Writeln('So doi bong tham gia: ',m); Writeln('STT':4,'TEN DOI BONG':25,'SO DIEM':10); For i:=1 to m do Begin Write(i:4,Doi[i]:25,S[i]:10); Writeln; End;End;BEGIN Clrscr; Nhap; Tinhdiem; Sapxep; Ghitep; Inra; Readln;END.

61https://www.facebook.com/groups/CNTT.NUCE/