Завдання

Скласти програми обчислення заданих виразів з використанням функцій користувача та процедур:

Варіант 1

1. Дано дійсні p, q.

Обчислити

де

2. Дано дійсні p, q.

Обчислити

де

3. Дано дійсні p, q.

Обчислити

де

4. Дано дійсні p, q.

Обчислити

де

5. Дано дійсні s, t.

Обчислити

де

6. Дано дійсні s, t.

Обчислити

де

7. Дано дійсні s, t.

Обчислити

де

8. Дано дійсні s, t.

Обчислити

де

9. Дано дійсні s, t.

Обчислити

де

10. Дано дійсні s, t.

Обчислити

де

11. Дано дійсні s, t.

Обчислити

де

12. Дано дійсні s, t.

Обчислити

де

13. Дано дійсні s, t.

Обчислити

де

14. Дано дійсні s, t.

Обчислити

де

15. Дано дійсні s, t.

Обчислити

де

16. Дано дійсні s, t.

Обчислити

де

17. Дано дійсні a, b.

Обчислити

де

18. Дано дійсні r,s.

Обчислити

де

19. Дано дійсні g, s.

Обчислити

де

20. Дано дійсні p,q.

Обчислити

де

21. Дано дійсні x, y.

Обчислити

де

22. Дано дійсні r,s.

Обчислити

де

23. Дано дійсні s, t.

Обчислити

де

24. Дано дійсні x, y.

Обчислити

де

25. Дано дійсні a, b.

Обчислити

де

26. Дано дійсні s, t.

Обчислити

де

27. Дано дійсні x, y.

Обчислити

де

28. Дано дійсне x.

Обчислити

де

29. Дано дійсне s.

Обчислити

де

30. Дано дійсне z.

Обчислити

де

31. Дано дійсне s.

Обчислити

де

32. Дано дійсне y.

Обчислити

де

33. Дано дійсне s.

Обчислити

де

34. Дано дійсне x.

Обчислити

де

35. Дано дійсне x.

Обчислити

де

36. Дано дійсні s,g.

Обчислити

де

37. Дано дійсне y.

Обчислити

де

38. Дано дійсне y.

Обчислити

де

39. Дано дійсне z.

Обчислити

де

40. Дано дійсне r.

Обчислити

де

41. Дано дійсне y.

Обчислити

де

42. Дано дійсне y.

Обчислити

де

43. Дано дійсні s.

Обчислити

де

44. Дано дійснi x, y.

Обчислити

де

45. Дано дійснi u, v.

Обчислити

де

46. Дано дійснi u, v.

Обчислити

де

47. Дано дійсні s,t.

Обчислити

де

48. Дано дійсні s,t.

Обчислити

де

49. Дано дійсні a,b.

Обчислити

де

50. Дано дійсні a, b.

Обчислити

де

 

Варіант 2

1. Дано дійсне t. Обчислити

2. Дано дійсне g. Обчислити

3. Дано дійсне t. Обчислити

4. Дано дійсне z. Обчислити

5. Дано дійсне k. Обчислити

6. Дано дійсне z. Обчислити

7. Дано дійсне t. Обчислити

8. Дано дійсне r. Обчислити

9. Дано дійсне t. Обчислити

10. Дано дійсне k. Обчислити

11. Дано дійсне f. Обчислити

12. Дано дійсне p. Обчислити

13. Дано дійсне z. Обчислити

14. Дано дійсне s. Обчислити

15. Дано дійсне p. Обчислити

16. Дано дійсне p. Обчислити

17. Дано дійсне f. Обчислити

18. Дано дійсне h. Обчислити

19. Дано дійсне g. Обчислити

20. Дано дійсне q. Обчислити

21. Дано дійсне q. Обчислити

22. Дано дійсне y. Обчислити

23. Дано дійсне r. Обчислити

24. Дано дійсне r. Обчислити

25. Дано дійсне k. Обчислити

 

Варіант 3

1. Описати процедуру, яка в лінійному однонапрямленому списку L (без елемента-заголовка) із кожної групи підряд розташованих однакових елементів залишає тільки один.

2. („одинакові” елементи –це такі, інформаційні поля яких співпадають).

3. Описати процедуру, яка в лінійному однонапрямленому списку L (з елементом-заголовком) із кожної групи підряд розташованих однакових елементів залишає тільки один.

4. („одинакові” елементи –це такі, інформаційні поля яких співпадають).

5. Описати процедуру, яка вилучає із лінійного однонапрямленого списку L (без елемента-заголовка) наступний після кожного входження Е елемент, якщо такий є.

6. (Е –значення інформаційного поля типу Tinfo).

7. Описати процедуру, яка вилучає із лінійного однонапрямленого списку L (з елементом-заголовком) всі від‘ємні елементи.

8. ( інформаційне поле типу real).

9. Описати рекурсивну процедуру, яка вилучає із кільцевого однонапрямленого списку L всі входження елемента Е.

10. (Е –значення інформаційного поля типу Tinfo).

11. Описати процедуру, яка вилучає із кільцевого однонапрямленого списку L перший від‘ємний елемент, якщо такий є.

12. ( інформаційне поле типу integer).

13. Описати рекурсивну процедуру, яка вилучає із кільцевого однонапрямленого списку L перше входження елемента Е, якщо такий елемент існує.

14. (Е –значення інформаційного поля типу Tinfo).

15. Описати процедуру, яка вилучає із лінійного однонапрямленого списку L без елемента-заголовка всі входження елемента Е.

16. (Е –значення інформаційного поля типу Tinfo).

17. Описати рекурсивну процедуру чи функцію, яка обчислює середнє арифметичне всіх елементів непорожнього кільцевого однонапрямленого списку L.

18. ( інформаційне поле типу real).

19. Описати рекурсивну процедуру, яка друкує в зворотньому порядку елементи кільцевого однонапрямленого списку L.

20. ( інформаційне поле типу char).

21. Описати рекурсивну процедуру чи функцію, яка обчислює середнє арифметичне всіх елементів непорожнього лінійного однонапрямленого списку L без елемента-заголовка.

22. ( інформаційне поле типу real).

23. Описати рекурсивну функцію, яка обчислює кількість входжень елемента Е в лінійний однонапрямлений список L без елемента-заголовка.

24. (Е –значення інформаційного поля типу Tinfo).

25. Описати рекурсивну функцію, яка обчислює кількість входжень елемента Е в кільцевий однонапрямлений список L.

26. (Е –значення інформаційного поля типу Tinfo).

27. Описати рекурсивну функцію, яка знаходить максимальний елемент непорожнього лінійного однонапрямленого списоку L без елемента-заголовка.

28. ( інформаційне поле типу real).

29. Описати рекурсивну функцію, яка визначає, чи входить елемент Е в лінійний однонапрямлений список L без елемента-заголовка.

30. (Е –значення інформаційного поля типу Tinfo).

31. Описати функцію, яка обчислює середнє арифметичне елементів непорожнього кільцевого однонапрямленого списку L.

32. ( інформаційне поле типу real).

33. Описати функцію, яка обчислює кількість елементів лінійного однонапрямленого списку L (без елемента-заголовка).

34. Описати функцію, яка обчислює кількість елементів кільцевого однонапрямленого списку L.

35. Описати функцію, яка визначає, чи кільцевий однонапрямлений списк –порожній.

36. Описати процедуру, яка вилучає другий елемент(якщо такий є) із непорожнього кільцевого однонапрямленого списку L.

37. Описати рекурсивну процедуру, яка замінює в кільцевому однонапрямленому списоку L всі входження Е1 на Е2.

38. (Е1,Е2 –значення інформаційного поля типу Tinfo).

39. Описати рекурсивну процедуру, яка подвоює кожне входження елемента Е в кільцевий однонапрямлений список L.

40. (Е–значення інформаційного поля типу Tinfo).

41. Описати рекурсивну процедуру, яка замінює в лінійному однонапрямленому списоку L без елемента-заголовка всі входження Е1 на Е2.

42. (Е1,Е2 –значення інформаційного поля типу Tinfo).

43. Описати процедуру, яка вилучає перший елемент із непорожнього кільцевого однонапрямленого списку L.

44. Описати процедуру, яка міняє місцями перший і останній елементи непорожнього лінійного однонапрямленого списку L (з елементом– заголовком).

45. Описати процедуру, яка вставляє в кінець кільцевого однонапрямленого списку L новий елемент із значенням Е інформаційного поля типу Tinfo.

46. Описати рекурсивну процедуру, яка будує L1–копію кільцевого однонапрямленого списку L.

47. Описати процедуру, яка переносить на початок непорожнього лінійного однонапрямленого списку L(без елемента–заголовка) його останній елемент.

48. Описати функцію, яка перевіряє на рівність лінійні однонапрямлені списки L1 та L2(без елементів–заголовків).

49. Описати процедуру, яка замінює в кільцевому однонапрямленому списоку L всі входження V1 на V2.

50. (V1,V2 –значення інформаційного поля типу Tinfo).

51. Описати процедуру, яка вставляє в кільцевий однонапрямлений список L новий елемент Е1після кожного входження елемента Е.

52. (Е1,Е –значення інформаційного поля типу Tinfo).

53. Описати процедуру, яка вставляє на початок кільцевого однонапрямленого списку L новий елемент із значенням Е інформаційного поля типу Tinfo.

54. Описати процедуру, яка вставляє в непорожній кільцевий однонапрямлений список L,елементи якого впорядковані по незростанню, новий елемент Е так, щоб збереглася впорядкованість.

55. (Е –значення інформаційного поля типу real).

56. Описати процедуру, яка вилучає другий елемент(якщо такий є) із непорожнього лінійного однонапрямленого списку L(без елемента-заголовка).

57. Описати функцію, яка обчислює середнє арифметичне елементів непорожнього лінійного однонапрямленого списку L(без елемента-заголовка).

58. Інформаційне поле типу real.

59. Описати процедуру, яка вставляє в непорожній лінійний однонапрямлений список L(з елементом–заголовком),елементи якого впорядковані по незростанню, новий елемент Е так, щоб збереглася впорядкованість.

60. (Е –значення інформаційного поля типу real).

61. Описати процедуру, яка вставляє в лінійний однонапрямлений список L(з елементом– заголовком) новий елемент Е1 після кожного входження елемента Е.

62. (Е1, Е –значення інформаційного поля типу Tinfo).

63. Описати процедуру, яка вставляє в непорожній кільцевий однонапрямлений список L пару нових елементів Е1 та Е2 перед його останнім елементом.

64. (Е1, Е2 –значення інформаційного поля типу Tinfo).

65. Описати процедуру, яка вставляє в непорожній лінійний однонапрямлений список L(з елементом–заголовком) пару нових елементів Е1 та Е2 перед його останнім елементом.

66. (Е1, Е2 –значення інформаційного поля типу Tinfo).

67. Описати функцію, яка перевіряє на рівність кільцеві однонапрямлені списки L1 та L2.

68. Описати процедуру, яка вилучає останній елемент із непорожнього кільцевого однонапрямленого списку L.

69. Описати функцію, яка перевіряє чи є в кільцевому однонапрямленому списку L хоча би два „однакових” елемента,– такі, інформаційні поля яких співпадають.

70. Описати функцію, яка перевіряє чи є в лінійному однонапрямленому списку L (без елемента-заголовка) хоча би два „однакових” елемента,– такі, інформаційні поля яких співпадають.

71. Описати функцію, яка перевіряє на рівність лінійні однонапрямлені списки L1 та L2 (з елементами–заголовками).

72. Описати процедуру, яка міняє місцями перший і останній елементи непорожнього кільцевого однонапрямленого списку L.

73. Описати процедуру, яка міняє місцями перший і останній елементи непорожнього лінійного однонапрямленого списку L(без елемента-заголовка).

74. Описати процедуру, яка вилучає перший елемент із непорожнього лінійного однонапрямленого списку L(з елементом–заголовком).

75. Описати функцію, яка перевіряє, чи впорядковані елементи лінійного однонапрямленого списку L(без елемента-заголовка) по алфавіту. Інформаційне поле типу „А”..”Z”.

76. Описати функцію, яка перевіряє, чи впорядковані елементи лінійного однонапрямленого списку L(з елементом–заголовком).по алфавіту. Інформаційне поле типу „А”..”Z”.

77. Описати функцію, яка обчислює суму останнього і передостаннього елементів лінійного однонапрямленого списку L(без елемента-заголовка),що містить не менше двох елементів.

78. Інформаційне поле типу integer.

 

9.3. Контрольні запитання з теми

1. Що таке підпрограма і для чого вона використовується?

2. Поясніть призначення локальних і глобальних змінних.

3. Як можна передавати дані з викликаючої програми в процедуру?

4. Як можна передавати результати виконання процедури в викликаючу її програму?

5. Де описуються процедури?

6. Що таке формальні і фактичні параметри?

7. Розкажіть про механізм передачі формальяих-фактичних параметрів.

8. Які два типи формальних параметрів визначені для процедури?

9. До чого відноситься опис типу в кінці заголовка підпрограми-функції?

10. Чим відрізняється опис функції від опису процедури?

11. Чим відрізняється виклик функції від виклику процедури?

12. Як можна передавати у підпрограму масиви різної розмірності?


Лабораторна робота № 10

Тема:

Обробка текстових файлів

Мета:

Уміти скласти програму з оброблення текстових файлів

10.1. Теоретичні відомості

Текстовий файл являє собою сукупність символів, об'єднаних в рядки – записи змінної довжини. В кінці кожного рядка розміщується спеціальна ознака кінця рядка – маркер (CR/LF), який в ASCII має код $0D/$0A. Сам текстовий файл закінчується маркером кінця файла ^Z з кодом $1A. Текстові файли можна обробляти лише послідовно. Крім того, введення і виведення даних неможливо виконувати одночасно для одного і того ж текстового файла.

Особливістю роботи з текстовими файлами є те, що параметри, значення яких вводяться та виводяться за допомогою процедур Read, Write, можуть бути не обов'язково типу Char або String. Допускається при введенні використову-вати також величини цілого та дійсного типу, а виведенні, крім цього, величини типу Boolean.

В мові PASCAL введення-виведення інформації здійснюється через спеціальні файлові змінні, які мають складну внутрішню структуру, що відповідає типу Record. Структури файлових типів описано в модулі Dos.

З кожною файловою змінною PASCAL-програми пов'язується поняття поточного вказівника файла. Поточний вказівник являє собою невидиму в межах програми змінну, яка визначає конкретний елемент файлу (вказує на нього). Як правило, всі дії над файлом виконуються поелементно, причому в операції бере участь саме той елемент, на який вказує поточний вказівник.

Файлові змінні для текстових файлів задаються так:

Var < iдентифікатори > : Text;

 

10.1.1. Стандартні процедури для текстових файлів

Введемо такі позначення:

FV - ім'я файлової змінної; St - String; Ch - символьна змінна.

З врахуванням введених позначень розглянемо файлові процедури:

Assing(FV,St) – пов'язує файлову змінну FV з зовнішнім ім'ям файла. Повне ім'я файла на диску має вид: St:= [<ім'я диску:>]<ім'я файлу>[.<тип>]; Починаючи з моменту виконання процедури Assign всі дії над файловою змінною FV еквівалентні дії над файлом, заданим значенням літерного рядка St.

Rewrite(FV) – відкриває текстовий файл виключно для запису. Ім'я файла попередньо визначено в процедурі Assign. Якщо процедура Rewrite використовується для створення нового файлу на диску, де вже існує файл з таким ім'ям, він знищується. Поточний вказівник файла встановлюється на його перший елемент.

Append(FV) – відкриває вже існуючий на диску файл для доповнення. На відміну від Rewrite, ця процедура не очищує створений файл, а лише встановлює поточний вказівник файла в його кінець. Таким чином процедура Append використовується тоді, коли необхідно додати нові рядки в кінець вже існуючого файла.

Reset(FV) – відкриває вже створений файл для читання. Вказівник встановлюється при цьому на початок файла. Якщо цю процедуру використати для неіснуючого файлу, виникає помилка введення-виведення.

Close(FV) – закриває файл, позначений змінною FV. В файл записуєтья маркер кінця файла $1A.

Read(FV,Ch) – зчитує наступний символ з файла FV в змінну Ch. Керуючі символи (CR/LF/^Z) при цьому також зчитуються.

Write(FV,Ch) – записує символьну змінну Ch в поточну позицію файла FV.

Readln(FV,St) – зчитує наступний рядок з файлу в змінну St. Маркери кін-ця рядка в змінну не записується.

Writeln(FV,St) – записує в файл FV рядок St. При цьому кінець рядка в файлі FV доповнюється маркерами (CR/LF).

При записі і зчитуванні вказівник файла переміщується послідовно по елементах файла. Розглянемо більш детально ці процедури.

 

10.1.2. Функції для роботи з текстовими файлами

1. EoLn(FV): Boolean – видає True, якщо наcтупний символ за прочитаним – маркер кінця рядка. В іншому випадку – видає False.

2. EoF(FV): Boolean – видає True, якщо наступний символ за прочитаним – маркер кінця файла.

 

10.1.3. Приклад обробки інформації в текстових файлах

Створити текстовий файл F.txt, який складається з рядків довжиною 40 символів, причому перший рядок складається з латинських літер 'A', другий – з літер 'B', останній – з літер 'Z'. Скопіювати файл F.txt в файли F1.txt та F2.txt таким чином, щоб в перший з них записувалися рядки, що складаються з голосних літер, а в другий – рядки, що складаються з приголосних літер.

Приклад:

Var

S : String;

Ch : Char;

i : byte;

Q, G, H : Text;

BEGIN

Assign(Q,'F.txt');

Rewrite(Q);

For Ch:='A' to 'Z' do

begin

S:='';

For i:=1 to 40 do S:=S+Ch;

Writeln(Q,S)

end;

Close(Q);

Reset(Q);

Assign(G,'F1.txt');

Rewrite(G);

Assign(H,'F2.txt');

Rewrite(H);

While not Eof(Q) do

begin

Readln(Q,S);

Ch:=S[1];

Case Ch of

'A','E','I','O','U','Y' : Writeln(G,S);

Else Writeln(H,S)

end

end;

Close(Q);

Close(G);

Close(H)

END.