Lời giải PASCAL

42 254 0
Tài liệu đã được kiểm tra trùng lặp
Lời giải PASCAL

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Nội dung thực hành môn ngôn ngữ lập trình PASCAL

Nguyễn Đức Thuận Nội dung thực hành Môn ngôn ngữ lập trình Pascal (Thời gian thực hành bao gồm 5 buổi, mỗi buổi 3 tiết) Buổi 1. Mục đích - Làm quen với môi trường phần mềm lập trình. - Làm quen với các lệnh vào ra, hàm thông dụng - Cấu trúc chương trình trong Pascal - Lệnh if…then, if …then …else - Kiểu dữ liệu đơn giản Bài tập Buổi 2. Mục đích Sử dụng các lệnh và các thuật toán thường gặp ứng với các lệnh - Các lệnh vòng lặp o for …to …do, for…downto…do o while…do… o repeat…until… - Lệnh rẽ nhánh o Case ….of…end, case…of….else….end o Khai báo nhãn Label… o goto… Bài tập Buổi thứ 3. Mục đích - Kiểu dữ liệu mảng: mảng số nguyên, mảng số thực, mảng ký tự… - Thuật toán tìm min, max, tìm kiếm số - Thuật toán sắp xếp các phần tử mảng một chiều - Mảng 2 chiều - Hàm (function), thủ tục (procedure) Bài tập - Tìm min, max, đếm min, max, tìm vị trí min, max - Sắp xếp tăng dần, giảm dần - Tạo ma trận cỡ n*n, n*m - Cộng 2 ma trận - Nhân 2 ma trận - Tìm hiểu về ma trận chuyển vị, ma trận đơn vị Buổi thứ 4. Mục đích - String khai báo kiểu string - Biết cách sử dụng các hàm liên quan đến kiểu dữ liệu string. Nguyễn Đức Thuận - Dùng hàm Upcase(), tạo hàm Downcase(), tạo hàm đổi chuỗi chữ thường thành chuỗi chữ hoa, đổi chuỗi chữ hòa thành chuỗi chữ thường. Bài tập - Chuyển đổi ký tự thường thành ký tự hoa - Chuyển đổi ký tự hoa thành ký tự thường - Biến một xâu chữ thường thành một xâu chữ hoa. - Biến một xâu chữ hoa thành một xâu chữ thường. - Tìm ký tự trung lập trong xâu - Chèn ký tự hay chuỗi vào một chuỗi - Biến 1 chuỗi bất kỳ thành chuỗi chuẩn - Gép nối các chuỗi - Buổi thứ 5 Mục dích - Khái báo kiểu dữ liệu record, trường dữ liệu, biến record(biến đơn và biến mảng) khái báo các record lồng nhau. - Các phép toán trên kiểu dữ liệu record. o Truy cập đến trường dữ liệu record o Phép gán record Bài tập - Tính điểm trung bình cộng cho n sinh viên - Sắp xếp danh sách sinh viên theo số báo danh - Sắp xếp danh sách theo ho va tên - Sắp xếp theo chiều điểm tăng dần - Sắp xếp theo chiều điểm trung bình cộng giảm dần - Sắp xếp theo chiều điểm trung bình cộng tăng dần - Tính điểm chó một danh sách n sinh viên, in ra số phần trăm sinh viên học lại, không phải học lại - Tính số phần trăm sinh viên điểm trung bình, khá, giỏi, xuất sắc - In ra danh sách sinh viên có điểm lớn hơn 8 - In ra danh sách tối đa có điểm cao nhất và lớn hơn 8 - In ra danh sách sinh viên có điểm nhỏ hơn 4 Buổi thứ 6 Mục đích - Sử dụng kiểu dữ liệu file, file định kiểu, không định kiểu… - Khai báo biến file, đặt tên file… - Mở file mới, mở file đã có, đóng file…. - Các bài toán liên quan đến file - … Bài tập Nguyễn Đức Thuận Buổi 1. Thực hành các lệnh vào ra Bài tập: Tính diện tích tam giác: Cách 1: Viết bình thường program dien_tich_tam_giac; uses crt; var a,b,c,s,p:real; Begin clrscr; Write('Nhap vao canh a:'); readln(a); Write('Nhap vao canh b:'); readln(b); Write('Nhap vao canh c:'); readln(c); p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); Writeln('Dien tich tam giac S=',s:4:2); readln; end. Cách 2: Sử dụng thủ tục procedure program dien_tich_tam_giac; uses crt; var a,b,c:real; procedure stamgiac(a,b,c:real); var s,p:real; begin p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); Writeln('Dien tich tam giac S=',S:4:2); end; begin clrscr; Write('Nhap vao canh a:'); readln(a); Write('Nhap vao canh b:'); readln(b); Write('Nhap vao canh c:'); readln(c); stamgiac(a,b,c); readln; end. Nguyễn Đức Thuận Cách 3: Viết sử dụng hàm fuction program dien_tich_tam_giac; uses crt; var a,b,c,s,p:real; function stamgiac(a,b,c:real) : real; var p:real; Begin p:=(a+b+c)/2; stamgiac:=sqrt(p*(p-a)*(p-b)*(p-c)); End; Begin clrscr; Write('Nhap vao canh a:'); readln(a); Write('Nhap vao canh b:'); readln(b); Write('Nhap vao canh c:'); readln(c); Writeln('Dien tich tam giac S=',stamgiac(a,b,c):4:2); readln; End. Bài 2. Giải phương trình bậc 2 Cách 1. Giải bình thường program phuong_trinh_bac_hai; uses crt; var a,b,c,x,x1,x2,del:real; Begin clrscr; Write('Nhap vao he so a:'); readln(a); Write('Nhap vao he so b:'); readln(b); Write('Nhap vao he so c:'); readln(c); if a=0 then if b=0 then writeln('Phuong trinh vo nghiem') else begin x:=-c/b; Writeln('Phuong trinh co nghiem x=',x:4:2) ; end else begin del:=sqr(b)-4*a*c; if del>0 then begin Nguyễn Đức Thuận x1:=(-b+sqrt(del))/(2*a); x2:=(-b-sqrt(del))/(2*a); Writeln('Phuong trinh co 2 nghiem'); Writeln('x1=',x1:4:2); Writeln('x2=',x2:4:2); end; if del<0 then Writeln('Phuong trinh vo nghiem'); if del=0 then begin x1:=-b/(2*a); x2:=x1; Writeln('Phuong trinh co nghiem kep'); Writeln('x1=x2=',x1:4:2); end; end; readln; End. Cách 2. sử đụng thủ tục program phuong_trinh_bac_hai; uses crt; var a,b,c,x,x1,x2,del:real; procedure ptb2(a,b,c:real; var x,x1,x2:real); Begin Write('Nhap vao he so a:');readln(a); Write('Nhap vao he so b:');readln(b); Write('Nhap vao he so c:');readln(c); CLRSCR; Writeln; Writeln('IN TRONG CHUONG TRINH CON'); if a=0 then if b=0 then writeln('Phuong trinh vo nghiem') else begin x:=-c/b; Writeln('Phuong trin co nghiem x=',x:4:2) ; end else begin del:=sqr(b)-4*a*c; if del>0 then begin Nguyễn Đức Thuận x1:=(-b+sqrt(del))/(2*a); x2:=(-b-sqrt(del))/(2*a); Writeln('Phuong trinh co 2 nghiem'); Writeln('x1=',x1:4:2); Writeln('x2=',x2:4:2); end; if del<0 then Writeln('Phuong trinh vo nghiem'); if del=0 then begin x1:=-b/(2*a); x2:=x1; Writeln('Phuong trinh co nghiem kep'); Writeln('x1=x2=',x1:4:2); end; end; end; Begin clrscr; ptb2(a,b,c,x,x1,x2); writeln; Writeln('IN TRONG CHUONG TRINH CHINH'); Writeln('x=',x:4:2); Writeln('x1=',x1:4:2); Writeln('x2=',x2:4:2); readln; End. Bài 2. Viết chương trình nhập 3 số tự nhiên bất kỳ từ bàn phím, tìm số lớn nhất, số nhỏ nhất. Bài 3. Viết chương trình thực hiên: Nhập vào 2 số tự nhiên bất kỳ, sau đó nhập từ bàn phím các phép tính +,-,*,/ rồi thực hiện các phép tính vừa nhập. Mục đích: Thực hành lệnh rẽ nhánh case of Thực hành sử dụng dữ liệu kiểu ký tự Thực hành cách đặt nhãn label, rẽ nhánh vô điều kiện goto program lenh_case; uses crt; label 1; Nguyễn Đức Thuận var kytu:char; a,b:integer; begin 1: clrscr; Write('Nhap gia tri a=');readln(a); Write('Nhap gia tri b=');readln(b); Writeln('phep tinh +,-,*,/ cho 2 so'); readln(kytu); case kytu of '+': Writeln(a,'+',b,'=',a+b); '-': Writeln(a,'-',b,'=',a-b); '*': Writeln(a,'*',b,'=',a*b); '/': Writeln(a,'/',b,'=',a/b); end; Writeln('Bam phim q quay lai chuong trinh'); Writeln('Bam phim bat ky thoat khoi chuong trinh'); readln(kytu); if (kytu='q') or (kytu ='Q') then goto 1; end. Bài 4. Viết chương trình thực hiện tính tổng liên tiếp các số tự nhiên nhập từ bàn phím cho đến khi tổng của nó lớn hơn 100. In lên số nhập dữ liêu. Program lenh_case; uses crt; label 1; var f:text; kytu:char; a,b,i,tong,so:integer; begin Clrscr; assign (f,'D:\tong.txt'); rewrite(f); Writeln('Nhap so bat ky'); tong:=0; Writeln('Tong hien tai la: Tong=',tong); i:=0; While tong<=100 do begin i:=i+1; Nguyễn Đức Thuận Write('So thu',i:3,'='); readln(so); writeln(f,so); tong:=tong+so; end; Writeln('Tong=',tong); writeln(f,'tong=',tong); close(f); readln; end. Program lenh_repeat_until; uses crt; label 1; var f:text; kytu:char; a,b,i,tong,so:integer; begin Clrscr; assign (f,'D:\tong.txt'); rewrite(f); Writeln('Nhap so bat ky'); tong:=0; Writeln('Tong hien tai la: Tong=',tong); i:=0; Repeat begin i:=i+1; Write('So thu',i:3,'='); readln(so); writeln(f,so); tong:=tong+so; end; Until tong>100; Writeln('Tong=',tong); writeln(f,'tong=',tong); close(f); readln; end. Bài 5. Viết chương trình nhập n số nguyên bất kỳ từ bàn phím: Nguyễn Đức Thuận a. Tính trung bình cộng các số dương nhập vào từ bàn phím, In kết quả lên màn hình. b. Lưu các số tự nhiên vừa nhập vào file trong ổ C máy tính. Bài 6. Viết chương trinh nhập vào n số tự nhiên bất kỳ vào từ bàn phím. a. In kết quả lên màn hình. b. Lưu kết qua trong file chứa trong ổ C. Program mang_va_file; uses crt; label 1; var f:text; i,n,so,dem:integer; m,vt:array[1 100] of integer; begin Clrscr; assign (f,'C:\tim_kiem.txt'); rewrite(f); Write('Nhap so phan tu mang n='); Readln(n); Writeln('Nhap gia tri phan tu'); for i:=1 to n do begin Write('Phan tu thu:',i:3,'='); Readln(m[i]); end; Write('Nhap phan tu muon tim kiem so= '); Readln(so); dem:=0; {Tim kiem phan tu} for i:=1 to n do if so=m[i] then begin dem:=dem+1; vt[dem]:=i; end; Writeln('So lan xuat hien so vua nhap',dem:3); Writeln('Vi tri so vua nhap'); for i:=1 to dem do Writeln(vt[i]:3); {Luu du lieu vao file} Writeln(f,'So phan tu mang: n=',n); Nguyễn Đức Thuận Writeln(f,'Gia tri cac phan tu'); for i:=1 to n do Write(f,m[i]:3); Writeln(f); Writeln(f,'So muon tim kiem:',so); Writeln(f,'Tim thay trong mang ',dem,'lan'); Write(f,'Vi tri tim thay:'); for i:=1 to dem do Write(f,vt[i]:3); close(f); readln; end. Bài 7. Viết chương trình nhập vào 1 mảng n số tự nhiên, nhập vào 1 số tự nhiên bất kỳ, tìm tất cả các số có trong mảng lớn hơn số vừa nhập, vị trí xuất hiện, số lượng các số lớn hơn. a. In kết quả lên màn hình. b. Lưu kết quả vào 1 file chứa trong ổ C. Program Tim_Cac_So_Lon; uses crt; label 1; var f:text; i,n,so,dem:integer; m,vt,sl:array[1 100] of integer; begin Clrscr; textcolor(green); assign (f,'C:\tim_kiem.txt'); rewrite(f); Write('Nhap so phan tu mang n='); Readln(n); Writeln('Nhap gia tri phan tu'); for i:=1 to n do begin Write('Phan tu thu:',i:3,'='); Readln(m[i]); end; Write('Nhap phan tu muon tim kiem so= '); Readln(so); dem:=0; {Tim kiem phan tu} . tam giac S=',stamgiac(a,b,c):4:2); readln; End. Bài 2. Giải phương trình bậc 2 Cách 1. Giải bình thường program phuong_trinh_bac_hai; uses crt; var. Làm quen với các lệnh vào ra, hàm thông dụng - Cấu trúc chương trình trong Pascal - Lệnh if…then, if …then …else - Kiểu dữ liệu đơn giản Bài tập Buổi 2.

Ngày đăng: 05/09/2013, 09:45

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan