CÁC BÀI TẬP VỀ BIẾN VÀ KIỂU DỮ LIỆU - Tài Liệu Text - 123doc

Tải bản đầy đủ (.doc) (23 trang)
  1. Trang chủ
  2. >>
  3. Giáo án - Bài giảng
  4. >>
  5. Tin học
CÁC BÀI TẬP VỀ BIẾN VÀ KIỂU DỮ LIỆU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (243.43 KB, 23 trang )

Hướng dẫn ôn tập Lập trình Pascal cơ bảnCÁC BÀI TẬP VỀ BIẾN VÀ KIỂU DỮ LIỆUBT_02_13Nhập vào 3 cạnh a, b, c của tam giác ABC.a) Tính diện tích tam giác.b) Tính độ dài các đường caoc) Tính độ dài các đường trung tuyếnd) Tính bán kính đường tròn ngoại tiếp.HƯỚNG DẪNa) Tính diện tích theo công thức Hê-rông: )cp)(bp)(ap(pS−−−= với )cba(21p++=b) Tính đường cao ứng với cạnh a theo công thức:aS2hah21Saa=⇒=c) Tính độ dài đường trung tuyến ứng với cạnh a theo công thức:2ac2b2m4ac2b2m222a2222a−+=⇒−+=d) Tính bán kính đường tròn ngoại tiếp theo công thức:S4abcRR4abcS=⇒=Đã có công thức thì lập trình không còn là chuyện lớn. Sau đây là chương trình mẫu, trong đó các biến có ý nghĩa : a, b, c là các cạnh; ha, hc, hb là các đường cao; ma, mb, mc là các trung tuyến tương ứng với các cạnh; S, p, R lần lượt là diện tích, nửa chu vi, bán kính đường tròn ngoại tiếp.program BT_02_13;var a, b, c, ha,hb,hc, ma,mb,mc, S,p,R : real;begin write('Nhap 3 canh cua tam giac '); readln(a,b,c); p := (a+b+c)/2; S := sqrt(p*(p-a)*(p-b)*(p-c)); R := (a*b*c)/(4*S); ha := 2*S/a; hb := 2*S/b; hc := 2*S/c; ma := sqrt(2*sqr(b)+2*sqr(c)-sqr(a))/2; mb := sqrt(2*sqr(a)+2*sqr(c)-sqr(b))/2; mc := sqrt(2*sqr(a)+2*sqr(b)-sqr(c))/2;Nguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội1Hướng dẫn ôn tập Lập trình Pascal cơ bản writeln('Thong tin ve tam giac: '); writeln('Dien tich S = ', S:0:5); writeln('Ban kinh duong tron ngoai tiep R = ', R:0:5); writeln('Do dai cac duong cao: '); writeln(' xuong canh a: ha = ', ha:0:5); writeln(' xuong canh b: hb = ', hb:0:5); writeln(' xuong canh c: hc = ', hc:0:5); writeln('Do dai cac duong trung tuyen:'); writeln(' xuong canh a: ma = ', ma:0:5); writeln(' xuong canh b: mb = ', mb:0:5); writeln(' xuong canh c: mc = ', mc:0:5); readln;end.BT_02_06: Nhập 2 số thực x,y, tính rồi in ra màn hình biểu thức: )yxarctg(22e)ycosx(sinln++ Yêu cầu kết quả viết với độ rộng 8 cột, có 3 chữ số phần thập phân.HƯỚNG DẪNTa sẽ dùng 3 biến x, y, z kiểu real, x,y để lưu 2 số nhập vào, z lưu kết quả biểu thức.Phần khai báo biến như sau:var x,y,z : real;Phần nhập dữ liệu: ta viết thông báo nhập dữ liệu rồi nhập x,y bằng lệnh readln: writeln('Nhap 2 so thuc x,y '); readln(x,y);Phần tính kết quả: ta dùng lệnh gán giá trị của biểu thức (đã viết ở BT_02_05) cho z: z := (ln(sqr(sin(x))+sqr(cos(x))))/(exp(arctan(x+y)));Phần in kết quả: ta viết z ra màn hình bằng lệnh writeln, có dùng khuôn dạng output z:8:3 theo yêu cầu của đề (độ rộng 8, 3 chữ số thập phân).Nội dung chương trình mẫu:program BT_02_06;var x,y,z : real;begin writeln('Nhap 2 so thuc x,y '); readln(x,y); z := (ln(sqr(sin(x))+sqr(cos(x))))/(exp(arctan(x+y))) writeln('Ket qua bieu thuc: ', z:8:3); readln;end.Nguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội2Hướng dẫn ôn tập Lập trình Pascal cơ bảnBT_02_07: Lập chương trình tính chu vi và diện tích đường tròn theo bán kính của nó.HƯỚNG DẪNTa cần nhập vào bán kính R của đường tròn rồi tính chu vi và diện tích của nó theo công thức toán: R2Cπ= và 2RSπ=. Hằng số π được định nghĩa sẵn trong Pascal với tên chuẩn là pi.Ta cần khai báo 3 biến thực R, C và S. Thực hiện việc nhập R rồi tính C, S theo các công thức trên. Sau đó in ra chúng.Chương trình mẫu:program BT_03_07;var r,c,s : real;begin writeln('Chuong trinh tinh chu vi va dien tich hinh tron.'); write('Nhap vao ban kinh r = '); readln(r); c := 2 * pi * r; s := pi * sqr(r); writeln('Chu vi C = ',c:0:4); writeln('Dien tich S = ',s:0:4); readln;end.BT_02_08: Lập trình tính diện tích hình thang khi cho 2 đáy và đường cao.HƯỚNG DẪNDữ liệu vào lưu trong là 3 biến a, b, h lần lượt là các cạnh và đường cao của hình thang. Biến s lưu diện tích của hình thang tính theo công thức: 2h)ba(+. Lệnh thực hiện việc tính là lệnh gán: s := (a+b)*h/2;Chương trình mẫu:program BT_02_08;var a,b,s,h: real;begin writeln('Chuong trinh tinh dien tich hinh thang. '); write('Nhap 2 canh va duong cao '); readln(a,b,h); s := (a+b)*h/2; writeln('Dien tich la S = ',s:0:5); readln;end.Nguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội3Hướng dẫn ôn tập Lập trình Pascal cơ bảnCÁC BÀI TẬP VỀ CẤU TRÚC ĐIỀU KHIỂNVD_03_02Viết chương trình giải phương trình bậc nhất ax+b=0.HƯỚNG DẪN Thuật toán có được theo cách giải trong môn toán: Nếu a<>0 thì có một nghiệm là x= - b/a,ngược lại (a=0) thìnếu b<>0 thì vô nghiệm, ngược lại (b<>0) thì có mọi số đều là nghiệm.Rõ ràng là chúng ta có thể dùng lệnh if, và trong trường hợp này <câu lệnh> của if lại là một lệnh if:readln(a,b );{ nhập hệ số }if a=0 then if b=0 then writeln('Moi so thuc deu la nghiem') else writeln('Phuong trinh vo nghiem')else writeln('Phuong trinh co nghiem duy nhat x = ',-b/a:0:5);Toàn văn chương trình:program VD_03_02;var a,b : real;begin writeln('Chuong trinh giai phuong trinh bac nhat ax+b=0 '); writeln('Nhap hai he so '); readln(a,b); if a=0 then if b=0 then writeln('Moi so thuc deu la nghiem') else writeln('Phuong trinh vo nghiem') else writeln('Phuong trinh co nghiem duy nhat x = ',-b/a:0:5); readln;end.VD_03_03Giải phương trình bậc hai ax2 + bx + c = 0;HƯỚNG DẪNTa cũng có thuật toán theo kiến thức môn toán:ac4bΔ2−=Nếu ∆<0 thì phương trình vô nghiệm.Nguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội4Hướng dẫn ôn tập Lập trình Pascal cơ bảnNếu ∆=0 thì phương trình có nghiệm kép abx2−=.Nếu ∆>0 thì phương trình có 2 nghiệm abx22,1∆±−=.Toàn văn chương trình:program VD_03_03;var a, b, c, d : real; x1, x2 : real;begin writeln('Chuong trinh giai phuong trinh bac hai a*x*x+b*x+c=0'); write('Nhap he so a,b,c: '); readln(a,b,c); d := sqr(b) - 4*a*c ; if d<0 then writeln('Phuong trinh vo nghiem.'); if d=0 then writeln('Phuong trinh co nghiem kep: x = ',-b/(2*a):0:5 ); if d>0 then begin x1 := (-b + sqrt(d))/(2*a); x2 := -b/a - x1 ; writeln('Phuong trinh co 2 nghiem phan biet:'); writeln('x1 = ',x1:0:5); writeln('x2 = ',x2:0:5); end; readln;end.VD_03_06Tính tổng các số tự nhiên từ 1 đến n với n nhập từ bàn phím.HƯỚNG DẪN Trong toán ta có công thức tổng quát:21)n(nn 2 1 sn+=…++=nên cách giải quyết đơn giản là thay n vào công thức để tính kết quả.Tuy nhiên không phải lúc nào ta cũng có công thức tổng quát và tính theo công thức tổng quát không phải lúc nào cũng hiệu quả nhất nên ta tìm một cách giải quyết khác: Sn có thể định nghĩa một cách truy hồi như sau:n; S S0. s1-nn0+==Từ đó ta có thể tính sn bằng cách cho tăng dần i từ 1 đến n và tính si = si-1+ i. Sau quá trình đó i=n và ta được sn là kết quả cần tính.program VD_03_06;var n, s, i : integer;beginNguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội5Hướng dẫn ôn tập Lập trình Pascal cơ bản writeln('Chuong trinh tinh tong cac so tu 1 den n.'); write('Cho n = '); readln(n); s := 0; for i := 1 to n do s := s + i; writeln('Ket qua: ',s); readln;end.VD_03_07: Dãy số Fibônaxi được định nghĩa như sau:≥∀+===3)n( fff1f 1,f2-n1-nn21Viết chương trình in ra các số Fibônaxi với từ 1 đến 20.HƯỚNG DẪN Ta dễ dàng tìm ra cách tính: cho i chạy từ 3 đến 20 rồi tính fi theo định nghĩa: fi=fi-1+fi-2. Đặt biến f0, f1, f2 đại diện cho fi, fi-1, fi-2 ứng với mỗi giá trị của i, thế thì ta có thể viết đoạn chương trình tính như sau: f1 := 1; f2 := 1; for i := 3 to n do begin f0 := f1 + f2; writeln('F',i,' = ',f0); f2 := f1; f1 := f0; end;Trong đoạn chương trình này, i là biến đếm chạy từ 3 đến n. Câu lệnh f0:=f1+f2; để tính fi theo công thức truy hồi. Hai câu lệnh tiếp tính giá trị của f1, f2 dùng để tính phần tử tiếp theo: rõ ràng để tính fi+1 thì f2:=fi-1 (=f1) và f1:=fi(=f0).Rõ ràng cách tính này đơn giản hơn sử dụng công thức tổng quát rất nhiều:(−−+=nnnf25125151).Toàn văn chương trình:program VD_03_07;const n = 20;var i, f0, f1, f2 : integer;begin writeln('Chuong trinh tinh cac so Fibonaxi tu 1 den ',n); f1 := 1; f2 := 1; writeln('F1 = 1'); writeln('F2 = 1');Nguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội6Hướng dẫn ôn tập Lập trình Pascal cơ bản for i := 3 to n do begin f0 := f1 + f2; writeln('F',i,' = ',f0); f2 := f1; f1 := f0; end; readln;end.VD_03_08Tính an với a là số thực và n là số nguyên dương.HƯỚNG DẪNTrong chương 2 ta đã biết tính ab với a là số thực dương và b bất kỳ theo công thức ln(a))*(b exp e ablnab==. Tuy nhiên công thức không thể tính khi a≤0. Ta tính bằng cách khác như sau:Với n nguyên dương đặt tn = an, ta có công thức truy hồi sau:==.a t t1 t1-nn0Như vậy cho i chạy từ 1 đến n và tính công thức trên ta sẽ tính tn. Cấu trúc for dùng cài đặt rất thích hợp.Đoạn chương trình như sau: t := 1; for i := 1 to n do t := t * a;Biến t đại diện cho ti ứng với mỗi i trong lệnh for. Trong câu lệnh t := t * a; biến t ở bên trái là ti, giá trị t ở bên phải là giá trị trước đó của t, tức là ti-1. Câu lệnh viết đúng theo công thức truy hồi. Xong vòng for i=n và t chính là giá trị tn = an. Ta thông báo kết quả.Toàn văn chương trình:program VD_03_08;var n,i : integer; a,t : real;begin writeln('Chuong trinh tinh a^n, a thuc, n tu nhien.'); write('Nhap a va n: '); readln(a,n); t := 1; for i := 1 to n do t := t * a; writeln('Ket qua : ',t:0:5); readln;end. VD_03_09Lập trình tính giai thừa của một số nguyên n (do giới hạn lưu trữ số nguyên cho n<8). Nguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội7Hướng dẫn ôn tập Lập trình Pascal cơ bảnHƯỚNG DẪNGiai thừa của n: n! = 1.2…n (tích các số tự nhiên từ 1 đến n). Không có công thức tổng quát để tính n! nhưng ta có công thức truy hồi sau:==)!n.(n-n!!110Đặt gn=n!, theo công thức trên ta có:==.ngg1g1-nn0Và như vậy tương tự VD_03_06 và VD_03_08 ta cũng có chương trình tính như sau:program VD_03_09;var n, i, g : integer;begin writeln('Chuong trinh tinh n! '); write('Nhap (n<8): '); readln(n); g := 1; for i := 1 to n do g := g * i; writeln('Ket qua: ',n,'! = ',g); readln;end.VD_03_10Tính gần đúng số e theo công thức chuỗi: n!1...3!12!11!11e+++++= với n nguyên nhập từ bàn phím.HƯỚNG DẪNTa có thể dựa trên chương trình tính giai thừa ở trên để tính một cách tường minh theo công thức trên. Tuy nhiên cách ấy không ổn vì hàm giai thừa tăng rất nhanh theo n, nếu n quá lớn thì không thể tính được. Đặt n!1...3!12!11!11en+++++= và n!1rn=, ta có công thức truy hồi:+=====−.reenrn1.rr1.r 1,en1-nn1n1-nn00Và từ đó ta có thể viết đoạn chương trình tính dùng vòng lặp for như sau:Nguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội8Hướng dẫn ôn tập Lập trình Pascal cơ bản e := 1; r := 1; for i := 1 to n do begin r := r / i; e := e + r; end;Toàn văn chương trình:program VD_03_10;var n,i : integer; e,r : real;begin writeln('Chuong trinh tinh gan dung e.'); write('Nhap n : '); readln(n); e := 1; r := 1; for i := 1 to n do begin r := r / i; e := e + r; end; writeln('Ket qua : ',e:0:10); readln;end.VD_03_14: Lập trình giải bài toán cổ: “Trăm trâu trăm cỏ, trâu đứng ăn 5, trâu nằm ăn 3, lải nhải trâu già 3 con 1 bó. Hỏi bao nhiêu trâu đứng, trâu nằm, trâu già”.HƯỚNG DẪNĐặt td là số trâu đứng, tn là số trâu nằm, tg là số trâu già thoả mãn bài toán. Thế thì td, tn, tg là các số nguyên dương thoả mãn: =++=++100335100tgtntdtgtntdTừ phương trình thứ hai ta có 5td≤100 và 3tn≤100, suy ra 1≤ td ≤ 20 và 1≤ tn ≤ 33. Số trâu già: tg=(100-td-tn) phải chia hết cho 3 (vì số bó cỏ bọn trâu già ăn là số nguyên, bằng tg div 3).Như vậy ta cần tìm các số td trong khoảng 1..20 và tn trong khoảng 1..33 sao cho: tg =(100 - td - tn) chia hết cho 3 và 5*td + 3*tn + tg div 3 = 100.Toàn văn chương trình:program VD_03_14;var td,tn,tg : integer;begin writeln('Giai bai toan tram trau tram co.'); for td := 1 to 20 do for tn := 1 to 33 do begin tg := 100 - td -tn; if (tg mod 3=0) and (5*td + 3*tn + (tg div 3)=100) thenNguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội9

Tài liệu liên quan

  • Tuyển tập các bài tập về vật rắn(đầy đủ các chủ đề) Tuyển tập các bài tập về vật rắn(đầy đủ các chủ đề)
    • 13
    • 1
    • 9
  • CÁC BÀI TẬP VỀ BIẾN VÀ KIỂU DỮ LIỆU CÁC BÀI TẬP VỀ BIẾN VÀ KIỂU DỮ LIỆU
    • 23
    • 2
    • 16
  • Biến và Kiểu dữ liệu Biến và Kiểu dữ liệu
    • 14
    • 368
    • 0
  •  Biến và Kiểu Dữ Liệu Biến và Kiểu Dữ Liệu
    • 22
    • 299
    • 0
  • Tài liệu Bài 2: Biến và Kiểu dữ liệu - Lý thuyết pptx Tài liệu Bài 2: Biến và Kiểu dữ liệu - Lý thuyết pptx
    • 15
    • 434
    • 0
  • 100 bài tập và bài giải môn thuế, tổng hợp các bài tập về thuế cần thiết 100 bài tập và bài giải môn thuế, tổng hợp các bài tập về thuế cần thiết
    • 22
    • 998
    • 0
  • Lập trình C-Bài 2: Biến và kiểu dữ liệu pptx Lập trình C-Bài 2: Biến và kiểu dữ liệu pptx
    • 15
    • 390
    • 0
  • Các bài tập về Biện pháp tu từ Các bài tập về Biện pháp tu từ
    • 8
    • 47
    • 656
  • bài tập về môn cơ sở dữ liệu bài tập về môn cơ sở dữ liệu
    • 7
    • 2
    • 63
  • Session 02 - Biến và Kiểu dữ liệu pot Session 02 - Biến và Kiểu dữ liệu pot
    • 15
    • 447
    • 0

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

(259.5 KB - 23 trang) - CÁC BÀI TẬP VỀ BIẾN VÀ KIỂU DỮ LIỆU Tải bản đầy đủ ngay ×

Từ khóa » Các Bài Tập Về Khai Báo Biến Trong Pascal