Программирование и комп-ры

Отчет по лабораторной работе №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);




смотреть на рефераты похожие на "Отчет по лабораторной работе №1"