*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.