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