Отчет по лабораторной работе №1
МОСКОВСКИЙ
ИНСТИТУТ РАДИОТЕХНИКИ,
ЭЛЕКТРОНИКИ
И АВТОМАТИКИ
(ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ)
Отчет по
лабораторной работе №1
Программирование на
языках В/У
Студент:
Группа:
Москва 2003
СОДЕРЖАНИЕ
1 ЗАДАНИЕ 3
2 БЛОК-СХЕМА
ПРОГРАММЫ 3
3 ТЕКСТ ПРОГРАММЫ
4
4 ОПИСАНИЕ РАБОТЫ
ПРОГРАММЫ 5
5 РУКОВОДСТВО
ОПЕРАТОРА 7
1 ЗАДАНИЕ
Программа должна
вставить новый элемент E после первого элемента непустого списка L.
2 БЛОК-СХЕМА
ПРОГРАММЫ
да
нет
нет
да
нет
да
3 ТЕКСТ ПРОГРАММЫ
Program Project1;
{$APPTYPE CONSOLE}
Uses SysUtils;
type
spisok=^s;
s=record
i:integer;
p:spisok; end;
var
n,k:word;
E:integer;
L,FstL,LL:spisok;
BEGIN
Write('Kol. Elementov
L:> ');ReadLn(k);
FOR n:=1 to k do BEGIN
New(L); Write('L',n,'
:> '); ReadLn(L^.i);
L^.p:=nil;
IF n=1 THEN begin
FstL:=L; LL:=L; end
ELSE begin
LL^.p:=L;LL:=L; end;
END;
Write('Element E:> ');
ReadLn(E);
New(L); L^.i:=E;
L^.p:=FstL^.p; FstL^.p:=L; L:=FstL;
While L<>nil do
begin Write(L^.i,' '); L:=L^.p; end;
ReadLn;
END.
4 ОПИСАНИЕ РАБОТЫ
ПРОГРАММЫ
ТАБЛИЦА ТИПОВ,
ИСПОЛЬЗУЕМЫХ ПРОГРАММОЙ
Имя типа
|
Тип
|
Назначение
|
spisok
|
|
Тип динамической
переменной со структурой s
|
s
|
record
|
запись,
содержащая переменную типа integer (i) и ссылку (p)
|
ТАБЛИЦА ПЕРЕМЕННЫХ,
ИСПОЛЬЗУЕМЫХ ПРОГРАММОЙ
Имя
|
Тип
|
Назначение
|
Word
|
Счетчик циклов
|
k
|
Word
|
Количество
элементов в списке L
|
E
|
integer
|
Элемент, который
необходимо вставить после первого элемента в списке L
|
L
|
spisok
|
Указатель,
содержащий адрес произвольного элемента списка L
|
FstL
|
spisok
|
Указатель,
содержащий адрес первого элемента списка L
|
LL
|
spisok
|
Указатель,
содержащий адрес последнего элемента списка L
|
Вначале работы
программа выводит на экран строку "Kol. Elementov L:>", после
чего необходимо ввести значение количества элементов, которые будут
записываться в список L. Затем происходит считывание этого
значения и переменной k присваивается значение количества
элементов списка L.
Далее организуется
цикл для ввода элементов списка L c помощью операторов
FOR и TO. Начиная с n, принимающего значение
единицы до значения k,
которое равно числу элементов списка, программа выполняет следующее. С помощью
процедуры New резервирует место
в памяти ЭВМ под динамическую переменную, адрес которой содержит указатель L. Выводит на экран
строку, в которой содержится номер элемента списка, который следует вводить.
Строка заканчивается символами ":>". После вывода строки программа
ждет ввода значения элемента. После ввода значения оно присваивается в поле i динамической переменной
структуры s, на которую ссылается
указатель L. В поле p этой переменной
записывается значение nil. Дальше проверяется условие: если n равно 1, что соответствует
первому элементу списка, тогда программа присваивает значение указателя L указателям FstL (указатель, содержащий
адрес первого элемента списка) и LL (указатель, содержащий адрес последнего
элемента списка). То есть указатель FstL будет содержать адрес первого элемента
списка. А иначе если n не равно 1, что соответствует второму и
последующим элементам списка, программа присваивает ссылке последнего элемента
списка, на который указывает указатель LL значение указателя
L, и указателю LL присваивает адрес
указателя L. Элемент, на
который ссылается указатель L становится последним в списке. На этом
цикл оператора FOR завершается. Таким образом происходит заполнение
списка значениями.
Далее программа
выводит на экран строку "Еlement E:>", после
чего необходимо ввести значение элемента Е. Программа считывает это значение и
присваивает его переменной Е. Затем программа вставляет элемент Е в список
после первого его элемента. Для этого программа с помощью процедуры New резервирует место
в памяти ЭВМ под динамическую переменную, адрес которой содержит указатель L. Затем поле i этого элемента
получает значение переменной Е. В ссылку текущего элемента записывается адрес,
содержащийся в ссылке первого элемента списка. А ссылка первого элемента списка
получает значение нового элемента списка, который имеет адрес, содержащийся в
указателе L. Таким образом
после первого элемента списка программа вставила еще одни элемент.
Для вывода списка
указателю L присваивается
адрес первого элемента списка, содержащийся в указателе FstL.
Затем организуется
цикл: в то время как L имеет адрес отличающийся от значения nil программа делает
следующее. Он организуется операторами WHILE и DO. Выводит на экран
содержимое поля i
динамической переменной структуры s, на которую ссылается указатель L. Далее указателю L присваивается
значение, содержащееся в ссылке p данной динамической переменной. На этом
один цикл, организованный операторами WHILE и DO завершается. В
результате этого цикла будут выведены на экран значения всех элементов списка L.
Далее программа
ждет нажатия на клавишу "Enter". Программа завершает работу.
5 РУКОВОДСТВО
ОПЕРАТОРА
Программа вставляет
новый элемент E после первого
элемента непустого списка L.
Вначале программа
формирует список произвольный список L. Для этого программа выдает на экран
строку:
После этого
необходимо ввести количество элементов, которые будут заноситься в список и
нажать клавишу "Enter". Программа запоминает это значение.
После программа
выдает на экран строки, после которых нужно вводить элементы списка начиная с
первого и заканчивая последним элементом. Программа вначале выдаст на экран строку:
После этого нужно
ввести значение элемента №1 списка и нажать клавишу "Enter".
После этого на
экран будет выведена следующая строка:
Соответственно
после нее следует ввести значение элемента №2 списка и нажать клавишу "Enter". И так далее
программа будет выводить строки, содержащие номер элемента, который следует
вводить. Например, если количество элементов, которое вы ввели вначале работы с
программой равно 10, то последняя строка будет выглядеть так:
После вывода этой
строки следует ввести значение этого элемента и нажать клавишу "Enter". Все
вводимые значения программа запоминает и формирует список, содержащий все эти
значения.
Далее программа
выдаст на экран строку:
После этого следует
ввести значение элемента Е и нажать клавишу "Enter". Программа
запоминает это значение. Затем программа корректирует список L таким образом:
вставляет значение элемента Е после первого элемента списка. Таким образом в списке
L появляется еще
один элемент. Если вы вводили 10 элементов, то теперь их будет 11.
Далее на экран
выводятся все значения скорректированного списка L начиная с первого.
Если вы вводили
следующие значения элементов начиная с первого: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 и
ввели элемент Е равный 0, то на экране появится следующая строка:
Далее программа
ждет нажатия на клавишу "Enter". После этого программа завершает
работу.