МОСКОВСЬКИЙ Інститут радіотехніки, 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>