Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
samost_pascal_delphi_2012.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
4.33 Mб
Скачать

Завдання 15:

Написати програму, яка має дві функції та виконую наступні дії:

  1. Описує та ініціює 3 двовимірні масиви розміром M,N,К випадковими числами.

  2. Викликає функцію_1 для їх обробки: Знайти max елемент та обміняти його місцями з елементом, розташованим на 1 елемент зліва від нього.

Питання для самоконтролю.

  1. Визначення процедури.

  2. Визначення функції.

  3. Формальні параметри.

  4. Фактичні параметри.

  5. Виклик процедур і функцій.

  6. Відповідність між фактичними і формальними параметрами.

  7. Область дії параметрів.

  8. Рекурсивні функції.

  9. Задачі, з постановки якиїх можна витягнути рекурсію.

  10. Задачі, які можна розв’язати як окремий випадок узагальненої.

  11. Задачі, в яких можна використати характеристику або властивість функції.

  12. Відкриті масиви.

Література: 2.с.143..187.

Дані рядкового типу string. Основні розділи теми.

  1. Тип даних CHAR.

  2. Рядковий тип

  3. Операції над рядками

  4. Рядкові процедури і функції

В TurboPascal є два типи даних для роботи з текстами:

CHAR - літерний або символьний тип;

STRING - рядковий тип або просто рядок.

Тип даних char.

Значенням змінних символьного типу char є один символ. Кожному символу відповідає код символу – ціле число від 0 до 255, таким чином дії по обробці символів зводяться до дій над цілими числами, розташованими строго по порядку.

Над даними символьного типу визначені операції порівняння (< <= > >= = <>). «Великим» вважається символ, який розміщений в алфавіті далі (він має більший номер в таблиці кодів комп'ютера ASCII).

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

  • chr(x) — повертає значення символу за його кодом;

  • ord(ch) — повертає код заданого символу ch;

  • pred(ch) — повертає попередній символ;

  • succ(ch) — повертає наступний символ;

  • upcase(ch) перетворить рядкову букву в заголовну. Обробляє букви тільки латинського алфавіту.

Приклад 1.:

ord('A')=65 pred('B')='A' upcase('n')='N'

chr(128)='Б' succ('Г')='Д'

Приклад 2. Перетворення російських і англійських букв в заголовні безпосередньо при введенні. Буква вводиться в будь-якому регістрі, а на екрані — завжди заголовна.

var с:char;

begin

с:=readkey;{ сліпе введення без відображення на екрані — модуль crt }

case с

{коди заголовних і прописних російських букв від А до П розрізняються на 32 }

'а' .. 'п': с:=chr(ord(c)-32);

'р' .. 'я': с:=chr(ord(c)-80); {а коди від Р до Я — на 80 }

'а' .. 'z': с:=upcase (с);

end;

write(c)

end.

Рядковий тип

Рядок — це послідовність символів. Максимальна кількість символів в рядку (довжина рядка) може змінюватися від 1 до 255.

  1. Змінну рядкового типу можна задати через опис типу в розділі визначення типів.

type <ИмяТипа> = string [<макс. довжина рядка>];

var <Идентифікатор> ... : <ім’я типу>;

Приклад. type stroka=string[80];

var str1,str2: stroke;

  1. Рядкову змінну можна задати і без попереднього оголошення типу безпосередньо в розділі оголошення змінних.

var <Идентификатор> . : string[макс. довжина рядка];

або

var <Идентификатор> ... : string;

Якщо максимальна довжина рядка не вказується, то вона рівна 255 байт.

Приклад. var str1,str2: string[80];

  1. Рядкові дані можуть використовуватися в програмі також як константи.

Приклад. const strAdres = 'вул. миру, 35'; { рядкова константа }

sAdr: string[12]= ' вул. Мира' { константа, що типізується, її можна. використовувати як звичайну змінну}

Рядок в мові Turbo Pascal трактується як масив символів. Для рядка с п символів в пам'яті відводиться n+1 байт; n байтів — для зберігання символів рядка, а один додатковий байт — для значення поточної довжини рядка. Цей додатковий байт має номер 0, відповідно перший символ рядка має номер 1, другий — номер 2 і т.д.

Приклад:.змінна sAdr типу string[12] зберігається в пам'яті таким чином.

Номер байта

0

1

2

3

4

5

6

7

8

9

10

11

12

Його значення

9

В

у

л

.

М

и

р

у

Всього рядок займає 13 байтів, з них останні 4 байти виявилися незайнятими, оскільки реальна довжина рядка складає 8 символів, це значення і зберігається в нульовому байті рядка. Незайняті байти складають "хвіст" рядка, в якому може бути будь-яке "сміття", проте програма не звертатиметься до "хвоста", оскільки реальний розмір рядка їй відомий.

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

До будь-якого символу в рядку можна звернутися як до елемента одновимірного масиву array [0..n] of char по номеру (індексу) даного символу в рядку.

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

Змінні рядкового типу можуть брати участь цілком в операторах введення-виведення.

Приклад. readln(st1); writeln(st2);

При введенні рядка кількість символів в ньому визначається автоматично, при цьому автоматично заповнюється нульовий байт. Для отримання довжини рядка є функція length, яка повертає значення нульового байта рядка.

Посимвольне введення рядка варто реалізувати тільки в тому випадку, якщо необхідно сумістити введення і якусь обробку символів. Посимвольне виведення також зручно використовувати для якої-небудь нестандартної форми виведення.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]