*Lý thuyết Câu 1: hãy phân biệt sự khác nhau giữa hoạt động biết trước và hoạt động không biết trước số lần thực hiện? Cho ví dụ? Câu 2: viết cú pháp và nêu nguyên lý hoạt động của hai vòng lặp "For...to..do..." và "while...do..." Câu 3: nêu tác dụng của biến mảng? Và cách khai báo biến mảng? *Bài tập Bài 1: Viết chương trình tính tổng các số chẵn 1-> n (n là số nguyên được nhập vào từ bàn phím) Bài 2: Cho số nguyên được nhập vào từ bàn phím, hãy viết chương trình kiểm tra số n có phải số nguyên tố hay không? Bài 3: Cho mảng a với n phần tử nguyên, Hãy viết chương trình tìm giá trị lớn nhất và nhỏ nhất.
2 câu trả lời
Câu 1:
For do:
- Là câu lệnh lặp với số lần biết trước
- Từ khóa: for, to, do
- Cú pháp: for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>;
- Câu lệnh trong vòng lặp ko làm thay đổi giá trị của biến đếm
While do:
- Là câu lệnh lặp với số lần chưa biết trước
- Từ khóa: while, do
- Cú pháp: while <điều kiện> do <câulệnh>;
- Câu lệnh có thể là câu lệnh đơn hay câu lệnh ghép
Câu 2:
For to do:
- Cú pháp: for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>;
- Hoạt động:
+ Biến điếm sẽ nhận giá trị bằng giá trị đầu
+ Sau mỗi vòng lặp, biến đếm tăng thêm một đơn vị cho đến khi bằng giá trị cuối thì kết
thúc lệnh lặp
While do:
- Cú pháp: while <điều kiện> do <câu lệnh>;
- Hoạt động:
+ Kiểm tra điều kiện
+ Nếu điều kiện sai sẽ bị bỏ qua và kết thúc lệnh lặp
+ Nếu điều kiện đúng sẽ thực hiện câu lệnh và quay lại kiểm tra điều kiện
Câu 3:
- Tác dụng:
+ Thay thế nhiều câu lệnh nhập và in bằng một câu lệnh
+ Có thể sử dụng biến mảng một cách rất hiệu quả trong xử lí dữ liệu
+ Tiết kiêm nhiều thực gian và công sức viết chương trình
- Cách khai báo biến mảng:
var <tên mảng> :array [<chỉ số đầu>..<chỉ số cuối>] of <kiểu dữ liệu>;
Bài 1:
program ct;
uses crt;
var S:longint;
i,n:integer;
begin clrscr;
write('Nhap so n: '); readln(n);
S:=0;
for i:=1 to n do
S:=S+i;;
writeln('Tong la: ',S);
readln;
end.
Học tốt!
$I$
Câu 1:
+ Số lần lặp biết trước là một số lần lặp được quy định (được đặt trước)
+ Số lần lặp chưa biết trước là số lần lặp chưa được quy định
- VD:
+ Biết trước: for i:=1 to 4 do inc(s,i);
+ Chưa biết trước:
while i<=4 do
begin
inc(s,i);
inc(i);
end;
Câu 2:
- Cú pháp:
+ Biết trước: for <biến>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>;
+ Chưa biết trước: while <điều kiện> do <câu lệnh>;
- Hoạt động:
+ Biết trước: lặp một code với số lần được đặt trước, khi nào hết số lần lặp thì dừng.
+ Chưa biết trước:
+ Nếu điều kiện đúng, câu lệnh thực hiện đến khi điều kiện sai.
+ Nếu điều kiện sai ngay từ đầu, câu lệnh không thực hiện sau đó kết thúc.
Câu 3:
- Tác dụng:
+ Rút ngắn thời gian khai báo
+ Tiện lợi cho những bài dài
+ ...
- Cú pháp:
<tên biến mảng>:array[<chỉ số đầu>..<chỉ số cuối>] of <kiểu dữ liệu>;
$II$
Câu 1:
uses crt;
var n,i,s:longint;
begin
clrscr;
write('Nhap n: '); readln(n);
for i:=1 to n do if i mod 2=0 then s:=s+i;
write('Tong: ',s);
readln;
end.
Câu 2:
uses crt;
var n,i,d:longint;
check:boolean;
begin
clrscr;
write('Nhap so nguyen: '); readln(n);
if n<=1 then begin check:=false; write(n,' khong phai la so nguyen to') end
else begin
for i:=1 to n do if n mod i=0 then inc(d);
if d=2 then begin check:=true; write(n,' la so nguyen to') end
else begin check:=false; write(n,' khong phai la so nguyen to'); end;
end;
readln;
end.
Câu 3:
uses crt;
var a:array[1..10000] of longint;
n,i,max,min:longint;
begin
clrscr;
write('Nhap so luong phan tu: '); readln(n);
for i:=1 to n do
begin
write('Nhap phan tu thu ',i,': '); readln(a[i]);
end;
max:=a[1];min:=a[1];
for i:=2 to n do
begin
if a[i]>max then max:=a[i];
if a[i]<min then min:=a[i];
end;
writeln('GTLN: ',max);
write('GTNN: ',min);
readln;
end.