Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задание по учебной практике №2.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
49.01 Кб
Скачать

Задание по учебной практике №2

Тема. Разработка программ с использованием пошаговой детализации структурированных алгоритмов. Разработка программ с использованием массивов , строк, записей, пользовательских типов данных .Разработка программ с использованием модульного программирования

Цель работы. Научиться разрабатывать программы с использованием пошаговой детализации простых алгоритмов, массивов , строк, записей, пользовательских типов данных, модульного программирования

Оборудование . ПЭВМ,ПО – TURBO PASCAL 7.0 , задание по учебной практике №2

Ход занятия

1.Актуализация опорных знаний

  1. Процедуры и функции (пользовательские).

  2. Процедуры и функции работы со строками.

  3. Тип данных – записи.

  4. Пользовательские типы данных.

  5. Структура модуля.

2. Теоретические сведения

2.1 Операторы цикла

Под циклом понимается многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений может быть задано в явной или неявной форме.

Для организации повторений в языке Pascal предусмотрены операторы Repeat, Whyle и For.

Оператор Repeat имеет форму:

Repeat

<операторы>

until <условие>;

и организует повторение операторов, помещенных между ключевыми словами repeat и until, до тех пор, пока не выполнится <условие>=true, после чего управление передается следующему за циклом оператору.

Оператор While имеет форму:

While<условие >do

begin

<операторы>

end;

и организует повторение операторов, помещенных между begin и end, до тех пор, пока не выполнится <условие>=fulse. Заметим, что если <условие>=fulse

при первом входе в цикл, то <операторы> не выполнятся ни разу, в отличие от оператора Repeat, в котором хотя бы один раз они выполнятся.

Оператор For имеет форму:

For i := i1 to i2 do

begin

<операторы>

end;

и организует повторное вычисление операторов при нарастающем изменении переменной цикла i от начального значения i1 до конечного i2 с шагом, равным единице. Заметим, что если i2>il, то <операторы> не выполнятся ни разу.

Модификация оператора имеет вид:

For i := i2 downto i1 do

begin

<операторы>

end;

и организует повторение вычислений при убывающем изменении i на единицу.

2.2 Массивы

Массив есть упорядоченный набор однотипных элементов, объединенных под одним именем. Каждый элемент массива обозначается именем, за которым в квадратных скобках следует один или несколько индексов, разделенных запятыми, например: а[1], bb[I], с12[I, j*2], q[l, 1, I*j-l]. В качестве индекса можно использовать любые порядковые типы за исключением LongInt.

Тип массива или сам массив определяются соответственно в разделе типов (Type) или переменных (Var) с помощью ключевого слова Array следующим образом:

Array [описание индексов] of <тип элементов массива >

Примеры описания массивов:

Const N=20; // Задание максимального значения индекса;

Type

Tvector = array [1..N] of real; // Описание типа одномерного массива;

Var

A : Tvector; //A - массив типа Tvector;

Ss : array[1..10] of integer; //Ss - массив из десяти целых чисел;

Y : array[l..5, 1..10] of char; //Y -двумерный массив символьного типа.

Элементы массивов могут использоваться в выражениях так же, как и обычные переменные, например:

F := 2*a[3] + a[ss[l] + 1]*3;

A[n] := 1+sqrt(abs(a[n-1]));

Умножение массива A на массив B

for i:=1 to N do

begin

s := 0;

for j:=1 to N do

s := s + A[i, j]*B[j];

Y[i] := s;

Написать программу ввода-вывода одномерного и двухмерного

массивов, память для которых распределяется динамически}

uses

crt;

Type

mas1=array[1..5] of real;

mas2=array[1..5] of ^mas1;

Var

a1:^mas1;

a2:^mas2;

fin:text;

i,j,n,m:integer;

begin

clrscr;

assign(fin,'mas1.txt');

reset(fin);

n:=0;

new(a1); {Резервируем место для одномерного массива}

while not eof(fin) do

begin

inc(n);

read(fin,a1^[n]);

end;

writeln('Исходный массив 1 ');

for i:=1 to n do

write(a1^[i]:8:0);

writeln;

dispose(a1);{Освобождаем память}

close(fin);

assign(fin,'mas2.txt'); {Матрица по строкам}

reset(fin);

n:=0;

{Резервируем место для одномерного массива указателей

на одномерные массивы-строки матрицы}

new(a2);

while not eof(fin) do

begin

inc(n);

{Резервируем место для одномерного массива указателей

на элементы n-й строки матрицы}

new(a2^[n]);

m:=0;

{Ввод очередной строки матрицы}

while not eoln(fin) do

begin

inc(m);

read(fin,a2^[n]^[m]);

end;

readln(fin);

end;

writeln;

writeln('Исходный массив 2 ');

for i:=1 to n do

begin

for j:=1 to m do

write(a2^[i]^[j]:8:0);

dispose(a2^[i]); {Освобождаем память от указателя на i-ю строку}

writeln;

end;

dispose(a2); {Освобождаем память от указателя на массив указателей}

close(fin);

readkey;

end.

Program Mas;

{Программа создает массив из N случайных чисел, распределенных в

диапазоне от 0 до MAX_VALUE-1, подсчитывает среднее

арифметическое этих чисел, минимальное и максимальное из них}

const

N=1000;

MAX_VALUE=100+1;

Var

m : array [1..N] of integer;

i : integer; {индекс массива}

max, min : integer;

s : real;

begin

{наполняем массив случайными числами}

for i:=1 to N do

m[i]:=random(MAX_VALUE);

{задаем начальное значение переменных}

s:=0;

max:=m[1];

min:=m[1];

{цикл вычисления суммы всех случайных чисел и поиска

минимального и максимального}

for i:=1 to N do

begin

s:=s+m[i];

if m[i]<min then

min:=m[i]

else if m[i]>max then

max:=m[i]

end;

WriteLn(‘Min=’,min,’Max=’,max,’Sred=’,s/N)

End.

Функция random(Max) используется для создания массива и возвращает случайное целое число, равномерно распределенное от 0 до Max-1 (Max – параметр обращения).

Количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления массива не может быть больше 65520 байт. В памяти компьютера элементы массива следуют друг за другом так, что при переходе от младших адресов к старшим наиболее быстро меняется самый правый индекс массива.

Var

A:array [1..2,1..2] of integer;

Begin

A[1,1]:=1;

A[2,1]:=2;

A[1,2]:=3;

A[2,2]:=4;

End.

В памяти друг за другом будут расположены байты со значениями 1,3,2,4.