- •Вопрос №1.Цель, предмет и задачи изучения дисциплины.
- •Вопрос №3. Технология выполнения программ на языке тр в ide
- •Вопрос №4. Принципы алгоритмизации и программирования.
- •Вопрос №5. Этапы решения задач на эвм.
- •Вопрос №6. Алгоритм. Сущность, свойства.
- •Вопрос №7. Методы преобразования алгоритмов.
- •Вопрос №8. Основные приемы разработки алгоритмов.
- •Вопрос №9. Общая структура цикла и получение из нее структур циклов на языке Турбо Паскаль
- •Вопрос №14.
- •Int(X) – значением функции является целая часть вещественного числа X.
- •Вопрос №15. Структура программ и подпрограмм.
- •Вопрос№18. Обработка массивов.
- •Вопрос №19. Пример обработки текстов.
- •Вопрос №20. Порядок обработки текстовых файлов.
- •Вопрос №21. Стандартные файлы ввода-вывода.
- •Вопрос №22. Процедуры и функции ввода-вывода. Типы данных и форматы вывода.
- •Вопрос №23. Организация и использование процедур в языке Паскаль.
Вопрос№18. Обработка массивов.
Массив – набор однотипных элентов, связанных набором целых чисел, называемых индексами.
Если индексы меняются с постоянным шагом, то массив называется прямоугольным
Пример. процедуры вывода таблицы символов.
При помощи цикла for
program chars;
procedure kodtable;
const n=255;
var i:byte;
ch:char;
begin
for i:=1 to n do begin
ch:=chr(i);
writeln(ch:3,i:4);
inc(i);
end;
end;
begin
kodtable;
readln
end.
При помощи цикла while
program chars;
procedure kodtable;
const n=255;
var i:byte;
ch:char;
begin
i:=0;
while i<=255
ch:=chr(i);
writeln(ch:3,i:4);
inc(i);
end;
end;
begin
kodtable;
readln
end.
При помощи цикла until
program chars;
procedure kodtable;
const n=255;
var i:byte;
ch:char;
begin
i:=1
repeat
ch:=chr(i);
writeln(ch:3,i:4);
inc(i);
until i>255;
end;
begin
kodtable;
readln
end.
Пример: Умножение матриц.
Задача: вычислить произведение двух матриц.
Математическое решение:
Цикл получения матрицы-произведения:
for i:=1 to n1 do begin
for k:=1 to m2 do begin
proizv[i,k]:=0;
for j:=1 to m1 do begin
proizv[i,k]:=proizv[i,k]+matrix1[i,j]*matrix2[j,k];
end;
end;
end;
Сам текст программы (на всякий случай, матрицы заполняются случайным образом)
program matXmat;uses crt;
const n=10;
var matrix,matrix1,matrix2,proizv:array[1..n,1..n] of Integer;
i,j,k,m1,n1,m2,n2:byte;
{вывод матрицы}
procedure vyvod(n,m:Integer);
begin
write('|':7);
for j:=1 to n do write(j:6);
writeln;
for j:=1 to n*8 do write('-');
writeln;
for i:=1 to n do begin
writeln('|':7);
write(i:6,'|');
for j:=1 to m do
write(round(matrix[i,j]):6);
writeln;
end;
end;
{Заполнение матрицы случайным образом}
procedure rand(n,m:Byte);
var i,j:Integer;
begin
writeln('Генерация матрицы случайных чисел:');
writeln;
Randomize;
for i:=1 to N do
for j:=1 to m do
matrix[i,j]:=random(51);
{ввывод матрицы}
vyvod(n,m);
end;
begin
clrscr;
repeat
writeln('Введите размеры первой матрицы');
readln(n1,m1);
writeln('ВВедите размеры второй матрицы');
readln(n2,m2);
if m1<>n2 then
writeln('Ошибка. Количество столбцов первой матрицы не совпадает с количеством строк первой матрицы');
until m1=n2;
writeln('заполнение матриц случайным образом');
rand(n1,m1);
matrix1:=matrix;
rand(n2,m2);
matrix2:=matrix;
for i:=1 to n1 do begin
for k:=1 to m2 do begin
proizv[i,k]:=0;
for j:=1 to m1 do begin
proizv[i,k]:=proizv[i,k]+matrix1[i,j]*matrix2[j,k];
end;
end;
end;
writeln('Произведение матриц равно матрице:');
matrix:=proizv;
vyvod(n1,m2);
readln
end.
Пример. Процедура ввода-вывода двумерной матрицы
{Заполнение вводом с клавиатуры}
procedure qwer;
var i,j:Integer;
begin
writeln('Заполнение матрицы с клавиатуры');
for i:=1 to N do begin
for j:=1 to N do
read(matrix[i,j]);
readln;
end;
{вывод матрицы}
procedure vyvod;
begin
write('|':7);
for j:=1 to n do write(j:6);
writeln;
for j:=1 to n*8 do write('-');
writeln;
for i:=1 to N do begin
writeln('|':7);
write(i:6,'|');
for j:=1 to N do
write(round(matrix[i,j]):6);
writeln;
end;
end;
Пример. Поиск координат минимального числа в двумерном массиве с максимальном размером 10х10
program matrixXmatrix;
var a:array[1..10,1..10] of Integer;
i,j,minx,miny,min,n1,n2:Integer;
procedure poisk(n1,n2:Integer);
var i,j:Integer;
begin
min:=a[1,1];
minx:=1;miny:=1;
for i:=1 to n1 do
for j:=1 to n2 do begin
if a[i,j]<min then begin min:=a[i,j];minx:=j;miny:=i;end;
end;
end;
begin
writeln('Введите размеры матрицы);
readln(n1,n2);
writeln('Заполните матрицу');
for i:=1 to n1 do begin
for j:=1 to n2 do
read(a[i,j]);
readln;
end;
poisk(n1,n2);
writeln(‘координаты минимального элемента:’,minx:3,miny:3);
readln
end.
Обработка треугольной части элементов двухмерного массива:
For r:=a to N do
For c:=1 to (n-a+1) do
{обработка элементов R,C}
