Отчет по лабораторной работе №1
	
	Отчет по лабораторной работе №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)                                      | 
    ТАБЛИЦА ПЕРЕМЕННЫХ, ИСПОЛЬЗУЕМЫХ ПРОГРАММОЙ 
|Имя   |Тип           |Назначение                                      | 
|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". После этого  программа 
завершает работу. 
----------------------- 
                                   L<>nil 
                                  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); 
	
	
					
							 |