МОСКОВСКИЙ ИНСТИТУТ РАДИОТЕХНИКИ,
ЭЛЕКТРОНИКИ И АВТОМАТИКИ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
Отчет по лабораторной работе №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 Lnil do begin Write(L^.i,' '); L:=L^.p; end;
ReadLn;
END.
4 ОПИСАНИЕ РАБОТЫ ПРОГРАММЫ
ТАБЛИЦА ТИПОВ, ИСПОЛЬЗУЕМЫХ ПРОГРАММОЙ
|Имя |Тип |Назначение |
|типа | | |
|spisok| |Тип динамической переменной со структурой s |
|s |record |запись, содержащая переменную типа integer (i) и|
| | |ссылку (p) |
ТАБЛИЦА ПЕРЕМЕННЫХ, ИСПОЛЬЗУЕМЫХ ПРОГРАММОЙ
|Имя |Тип |Назначение |
|n |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. Для этого
программа выдает на экран строку:
|Kol. Elementov L:> |
После этого необходимо ввести количество элементов, которые будут
заноситься в список и нажать клавишу "Enter". Программа запоминает это
значение.
После программа выдает на экран строки, после которых нужно вводить
элементы списка начиная с первого и заканчивая последним элементом.
Программа вначале выдаст на экран строку:
|L1 :> |
После этого нужно ввести значение элемента №1 списка и нажать клавишу
"Enter".
После этого на экран будет выведена следующая строка:
|L2 :> |
Соответственно после нее следует ввести значение элемента №2 списка и
нажать клавишу "Enter". И так далее программа будет выводить строки,
содержащие номер элемента, который следует вводить. Например, если
количество элементов, которое вы ввели вначале работы с программой равно
10, то последняя строка будет выглядеть так:
|L10 :> |
После вывода этой строки следует ввести значение этого элемента и
нажать клавишу "Enter". Все вводимые значения программа запоминает и
формирует список, содержащий все эти значения.
Далее программа выдаст на экран строку:
|Element Е:> |
После этого следует ввести значение элемента Е и нажать клавишу
"Enter". Программа запоминает это значение. Затем программа корректирует
список L таким образом: вставляет значение элемента Е после первого
элемента списка. Таким образом в списке L появляется еще один элемент. Если
вы вводили 10 элементов, то теперь их будет 11.
Далее на экран выводятся все значения скорректированного списка L
начиная с первого.
Если вы вводили следующие значения элементов начиная с первого: 1, 2,
3, 4, 5, 6, 7, 8, 9, 10 и ввели элемент Е равный 0, то на экране появится
следующая строка:
|1 0 2 3 4 5 6 7 8 9 10 |
Далее программа ждет нажатия на клавишу "Enter". После этого программа
завершает работу.
-----------------------
Lnil
L:=FstL;
Write(L^.i,' ');
L:=L^.p;
LL^.p:=L;
LL:=L;
n=1
Выход
ReadLn
n:=1
New FstL:=L;
LL:=L;
Write('Element E:> ');
ReadLn(E);
New(L);
L^.i:=E;
L^.p:=FstL^.p; stL^.p:=L;
n:=n+1
New(L);
Write('L',n,' :> ');
ReadLn(L^.i);
L^.p:=nil;
n=k
Начало программы
Write('Kol. Elementov L:> ');
ReadLn(k);