Данный материал может использоваться как учителем так и учащимися на уроках по программированию в среде процедурного программирования Free Pascal. В дидактической разработке представлены наиболее часто используемые типы данных в языке программирования Pascal и конструкции, использующиеся в программировании с использованием одномерных массивов.
1.
Типы данных
Целые числа:
Byte (0…255)
Word (0…65535)
Shortint (128…+127)
Integer (32768…+32767)
Longint (2147483648…+2147483647)
ПАМЯТКА
Простые типы (скалярные типы)
Вещественные числа:
Real (2.9E39 … 1.7E38)
Single (1.5E45 … 3.4E38)
Double (5.0E324 … 1.7E308)
Extended (3.4E4932 … 1.1E4932)
Структурированные типы
Логический тип: Boolean (true; false)
Символьный тип: Char
Перечисляемый тип: (Type Perechis_type=A,B,C,D)
Интервальный тип (диапазон): 1..100
Строковый: string
Регулярный (массивы): array
Комбинированный: record
Множественный: set
Файловый:
Компонентный – file of …
Текстовый – text
2.
Структуры для обработки массивов
Цикл с параметром
Операторы для обработки одномерных массивов
Цикл с предусловием
i:=1; While i<=N do begin read (X[i]); i:=i+1; end;
Ввод элементов массива с клавиатуры:
For i:=1 to N do read (X[i]);
Задание значений элементов массива с помощью генератора случайных чисел (RANDOMIZE):
For i:=1 to N do
begin X[i]:=random(ba+1)+a; write (X[i],’ ’); end;
Вывод элементов массива в сточку:
For i:=1 to N do write (X[i],’ ’);
Вывод элементов массива в столбик:
For i:=1 to N do writeln (X[i]);
Поиск минимального элемента массива:
Min:=X[i];
For i:=1 to N do if X[i]Max then Max:= X[i];
writeln (Max);
Max:=X[i];
i:=1; While i<=N do begin
if X[i]>Max then Max:= X[i];
i:=i+1; end; writeln (Max);
Цикл с постусловием
i:=1; Repeat read (X[i]); i:=i+1; Until i>N;
i:=1; Repeat
X[i]:=random(ba+1)+a; write (X[i],’ ’);i:=i+1; Until i>N;
i:=1; Repeat write (X[i],’ ’); i:=i+1; Until i>N;
i:=1; Repeat writeln (X[i]); i:=i+1; Until i>N;
Min:=X[i];
i:=1; Repeat if X[i]N;
writeln (Min);
Max:=X[i];
i:=1; Repeat if X[i]>Max then Max:= X[i]; i:=i+1; Until i>N;
writeln (Max);
i:=k; While i<=N do begin X[i]:=X[i+1]; i:=i+1; end; N:=N1; i:=k; Repeat X[i]:=X[i+1]; i:=i+1; Until i>N; N:=N1;
Удаление элемента из kтой позиции:
For i:= k to N do X[i]:=X[i+1]; N:=N1;
Добавление элемента A в kтую позицию:
For i:= N downto k do X[i+1]:=X[i]; X[k]:=A; N:=N+1;
i:=N;
While i>=k do begin X[i+1]:=X[i]; i:=i –1; end; X[k]:=A;
N:=N+1;
Сортировка массива методом прямого обмена по возрастанию:
For i := 1 to n 1 do begin
For k := 1 to n 1 do
if x[k]>x[k+1] then
Begin
Buf := x[k];
x[k] := x[k+1];
x[k+1] := Buf;
end; end;
i:=1;
while iX[k+1] then begin
Buf:=X[k];
X[k]:=X[k+1];
X[k+1]:=Buf;
end;
k:=k+1; end;
i:=i+1; end;
i:=N; Repeat X[i+1]:=X[i]; i:=i – 1; Until iX[k+1] then begin
Buf:=X[k];
X[k]:=X[k+1];
X[k+1]:=Buf;
end;
k:=k+1; until k=N;
i:=i+1; until i=N;
Цикл с параметром
Ввод элементов массива с клавиатуры:
For i:=1 to N do
For j:=1 to M do read (X[i,j]);
Операторы для обработки двумерных массивов
Цикл с предусловием
Цикл с постусловием
i:=1; While i<=N do begin
j:=1; while j<=M do begin read (X[i,j]);
j:=j+1;end; i:=i+1; end;
i:=1; Repeat
j:=1; repeat read (X[i,j]);
j:=j+1; until j>M; i:=i+1; Until i>N;
Задание значений элементов массива с помощью генератора случайных чисел (RANDOMIZE):
For i:=1 to N do begin
For j:=1 to M do
begin X[i,j]:=random(ba+1)+a; write (X[i,j]:5); end;
writeln; end;
Вывод элементов массива в сточку:
For i:=1 to N do For j:=1 to M do write (X[i,j],’ ’);
Вывод элементов массива по строкам и столбцам:
For i:=1 to N do begin
For j:=1 to M do write (X[i,j]:5);
writeln; end;
i:=1; While i<=N do begin
j:=1; while j<=M do begin
X[i,j]:=random(ba+1)+a; write (X[i,j]:5);j:=j+1;end;
Writeln; i:=i+1; end;
i:=1; While i<=N do begin write (X[i,j],’ ’); i:=i+1; end;
i:=1; While i<=N do begin
j:=1; while j<=M do begin
write (X[i,j]:5);
j:=j+1; end;
writeln; i:=i+1; end;
Поиск минимального элемента массива по столбцам:
For j:= 1 to M do begin
min:=A[i,j];
For i:= 1 to N do If A[i,j]< min then min:=A[i,j];
Writeln('МИНИМУМ ',j,' СТОЛБЦА =',min); end;
Поиск максимального элемента массива по строкам :
For i:= 1 to N do begin
max:=A[i,j];
For j:= 1 to M do If A[i,j]> max then max:=A[i,j];
Writeln('МАКСИМУМ ',i,' СТРОКИ =',max); end;
j:=1; while j<=M do begin
Min:=X[i,j];
i:=1; While i<=N do begin
if X[i,j]Max then Max:= X[i,j]; j:=j+1;end;
Writeln('МАКСИМУМ ',i,' СТРОКИ =',max);
i:=i+1; end;
i:=1; Repeat
j:=1; repeat
X[i,j]:=random(ba+1)+a; write (X[i,j],’ ’);
j:=j+1; until j>M; i:=i+1; writeln; Until i>N;
i:=1; Repeat write (X[i,j],’ ’); i:=i+1; Until i>N;
i:=1; Repeat
j:=1 ; repeat
write (X[i,j]:5);
j:=j+1; until j>M;
writeln; i:=i+1; Until i>N;
j:=1; repeat Min:=X[i,j];
i:=1; Repeat if X[i,j]N;
Writeln('МИНИМУМ ',j,' СТОЛБЦА =',min);
j:=j+1; until j>M;
i:=1; repeat Max:=X[i,j]; j:=1;
Repeat if X[i,j]>Max then Max:= X[i,j]; j:=j+1; Until j>M;
Writeln('МАКСИМУМ ',i,' СТРОКИ =',max);
i:=i+1;
Until i>N;
Сортировка элементов двумерного массива по строкам
For i:= 1 to N do
i:=1; while i<=N do begin
i:=1; repeatfor j:=1 to N1 do
For k:= 1 to N1 do
If X[i,k]> X[i,k+1] then begin
Buf:= X[i,k];
X[i,k]:=X[i,k+1];
X[i,k+1]:=Buf; end;
j:=1; while j X[i,k+1] then begin
Buf:= X[i,k]; X[i,k]:=X[i,k+1]; X[i,k+1]:=Buf; end;
k:= k+1; end;
j:=j+1; end; i:= i+1; end;
j:=1; repeat
k:=1; repeat
If X[i,k]> X[i,k+1] then begin
Buf:= X[i,k]; X[i,k]:=X[i,k+1]; X[i,k+1]:=Buf; end;
k:= k+1; until k = M; j:=j+1; until j=M; i:=i+1;until i>N;