Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab1.doc
Скачиваний:
8
Добавлен:
01.05.2025
Размер:
299 Кб
Скачать
☆

4. Дані символьного типу та дані типу string

Дані символьного типу можуть приймати значення з множини символів системи кодування, що використовуються на персональному комп’ютері.

Для представлення алфавітно-цифрової інформації в пам’яті комп’ютера використовуються символи (букви, цифри, спеціальні знаки, тощо). Для кожного символу відводиться один байт пам’яті, де записується двійковий код символа. Так як в одному байті можливі 256 різних комбінацій з 0 та 1, то можна використовувати 256 різних символів для представлення алфавітно-цифрової інформації в пам’яті комп'ютера.

Закон, за яким двійковому коду в одному байті співставляється символ, називається системою кодування. Основною системою кодування на персональних комп'ютерах є система кодування IBM PC. На базі цієї системи розроблена і використовується в країнах колишнього CPCP декілька систем кодування; альтернативне кодування, основне кодування, модифіковане альтернативне кодування, болгарська система кодування та інші. Ці системи підтримуються програмним шляхом.

Константи символьного типу записуються в апострофах: 'a', 'A', 'я', '+' і т.д. Константа апостроф записується так ''''. Символьні константи можуть бути поіменовані в розділі const. Змінні символьного типу описуються в розділі var:

var

список змінних:char;

Приклад.

var

c1,c2,c3,c4:char;

Описуються змінні c1, c2, c3, c4, як змінні символьного типу.

Дані типу string можуть приймати значення в вигляді послідовності символів системи кодування. Кількість символів в послідовності не повинно перевищувати 255. Константи текстового типу записуються в апострофах: 'Динамо Київ', 'максим. x', 'Зв''язок' (символ апостроф подвоюється ).

Текстові константи можуть бути поіменовані в розділі const.

Приклад.

const

ch1='Група 18, радіотехніки';

ch2='Група 17, фізики';

Кількість символів в константі називається довжиною константи. Так довжина константи ch2 дорівнює 16.

Змінні типу string можна описати через поіменованний тип в розділі type:

type

ім'я типу=string[максимальна довжина];

var

список змінних:ім'я типу;

а можна безпосередньо в розділі var:

var

список змінних:string[максимальна довжина];

Приклад.

type

flot=string[124];

var

c1:flot;

c2:string;

c3:string[50];

Описана змінна c1, як текстова змінна довжиною 124 символів, змінна c2 –  текстова змінна довжиною 255 символів (за замовчуванням), c3 – текстова змінна довжиною 50 символів.

Над даними символьного типу та даними типу string можна виконувати операцію зчеплення, яка позначається знаком +.

Приклад.

'I'+'B'+'M'='IBM’

'Динамо '+'Київ'='Динамо Київ'

'Зв''язок'+'це все'='Зв''язокце все'

5. Стандартні процедури введення–виведення

Стандартні процедури введення-виведення використовуються для введення значень вхідних даних і виведення значень вихідних даних в процесі виконання програми. Це процедури read, readln (для введення з клавіатури) та write, writeln (для виведення на екран).

Формат звернення до процедури read:

read (список введення) [;]

Елементами списку введення можуть бути змінні цілочисельних, дійсних та символьних типів. Значення елементів списку введення набираються на клавіатурі мінімум через один пропуск та висвітлюються на екрані. Місце зображення значень на екрані визначається курсором. Після набирання цих значень натискається клавіша Enter.

Після зчитування значень процедура read переводить курсор в першу позицію наступного рядка. Між елементами списку введення та значеннями, що набираються на клавіатурі встановлюється взаємно однозначна відповідність; першому елементу списку введення відповідає перше значення, другому елементу – - друге значення і т.д. Вимагається, щоб тип змінної та тип відповідного йому значення були однаковими (за одним винятком: змінній дійсних типів може відповідати цілочисельне значення). У протилежному випадку, видається повідомлення про помилку введення-виведення.

Приклад.

var

i,k,n,m: integer;

begin

read (i,k,a,b);

.....................

end.

Опис i,k,n,m: integer; визначає такий розподіл пам’яті комп’ютера для зберігання значень змінних i, k,n,m:

нв

нв

нв

нв

m n k i

(кожна змінна займає по 2 байти, їх початкові значення не визначені (нв).

Виконання програми розпочинається із звернення до стандартної функції read, яка зупиняє виконання програми і очікує введення значень змінних списку введення ( в цьому випадку змінних i, k,n,m).

Допустимо, що на клавіатурі набрано:

45 -57 34 234Enter

В результаті сформований такий вхідний потік символів:

4 5 Пробіл – 5 7 Пробіл Пробіл 3 4 Пробіл Пробіл Пробіл 2 3 4 КінецьРядка

з вказівником на першому символі 4 (підкреслений). На екрані монітора потік буде виведений так:

(вважаємо, що спочатку курсор знаходився 1-й позиції 1-го рядка).

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

4 5 Пробіл – 5 7 Пробіл Пробіл 3 4 Пробіл Пробіл Пробіл 2 3 4 КінецьРядка

Після цього процедура аналізує прочитані символи. Можна з них утворити ціле число? В цьому випадку із символів (4, 5) можна утворити число. Процедура переводить це число в двійкове число і записує його у форматі ЦізЗ у область пам’яті, яка відведена для зберігання змінної i (змінній присвоєне значення 45).

нв

нв

нв

2D00

m n k i=45

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

4 5 Пробіл – 5 7 Пробіл Пробіл 3 4 Пробіл Пробіл Пробіл 2 3 4 КінецьРядка

Після цього процедура знову аналізує прочитані символи, чи можна з них утворити ціле число? В цьому випадку із символів (-, 5, 7) можна утворити число. Процедура переводить це число двійкове і записує його у форматі ЦізЗ у область пам’яті, яка відведена для зберігання змінної k (змінній присвоєне значення -57).

нв

нв

C7FF

2D00

m n k=-57 i=45

Список введення не вичерпаний, тому процедура read продовжує зчитування символів:

4 5 Пробіл – 5 7 Пробіл Пробіл 3 4 Пробіл Пробіл Пробіл 2 3 4 КінецьРядка

З символів (3,4) можна утворити ціле число, тому змінній n присвоюється значення 34:

нв

2500

C7FF

2D00

m n=34 k=-57 i=45

Список введення не вичерпаний, тому процедура read продовжує зчитування символів:

4 5 Пробіл – 5 7 Пробіл Пробіл 3 4 Пробіл Пробіл Пробіл 2 3 4 КінецьРядка

З символів (2,3,4) можна утворити ціле число, тому змінній m присвоюється значення 234:

EA00

2500

C7FF

2D00

m=234 n=34 k=-57 i=45

Символ КінецьРядка вказує, що всі символи в потоці закінчилися і, оскільки список введення вичерпаний, процедура read закінчить свою роботу і передасть управління в основну програму. В результаті

m=234, n=34, k=-57, i=45.

Якщо на клавіатурі набрати

67 46 5.4 8 Enter,

то процедура read видасть повідомлення про помилку часу виконання (run time error) через те, що з символів (5.4) не можна утворити ціле число.

Якщо введена кількість значень менша за кількість змінних в списку введення, то процедура read продовжує роботу, поки таки не будуть введені необхідні значення. Якщо ж введено більше значень ніж потрібно, то зайві просто нехтуються.

В програмі можна використовувати безліч разів процедуру read.

Приклад.

var

i, k: integer;

a, b: real;

begin

read (i,k);

read (a,b);

................

end.

На клавіатурі необхідно набрати (наприклад)

45 -57 Enter 5.6 3.4 Enter.

В результаті роботи процедури read

i=45, k=-57, a=5.6, b=3.4

Формат звернення до процедури write

write(список виведення) [;]

Елементами списку виведення можуть бути змінні, константи, вирази цілочисельних, дійсних та символьних типів. Біля кожного елемента списку виведення через : можуть вказуватися формати виведення.

Процедура write виводить значення елементів списку виведення на екран, починаючи з місця на екрані вказане курсором. Після закінчення виведення процедура write виставить курсор одразу після останнього значення.

Процедура writeln після виведення останнього значення переведе курсор в першу позицію наступного рядка. В цьому єдина відмінність процедури writeln від процедури write.

Формати виведення дозволяються керувати виведенням інформації на екран. Для елементів цілочисельних типів можливий один формат: І:р (р –  цілочисельна константа, а І  – цілочисельне значення, яке може бути задане цілочисельними константою, змінною, виразом). Цілочисельне значення виводиться на екран в правих позиціях поля довжиною р (поле - це сукупність знакомісць на екрані.).

Приклади:

Значення І Звернення до Результат

процедури write

134 write(I:5) _ _134

5674 write(I:7) _ _ _5674

600 write(I:4,2*I:5) _600_1200

789 write(I:2) 789

Якщо довжина поля, вказана константою р, менша за кількість значущих цифр значення І, то фактична довжина поля для значення І буде дорівнювати кількості значущих цифр (останній приклад). Знак _ позначає пропуск та на екрані не зображається. Якщо розмір поля не вказаний, то значення І виводиться, починаючи з позиції курсора і займає стільки знакомісць, скільки потрібно.

Приклади.

Значення І Звернення до Результат

процедури write

134 write(I) 134

5674 write(I) 5674

600 write(I,2*I,I+5) 6001200605

Формати для елементів списку виведення дійсних типів мають вигляд R:p або R:p:q, де R – дійсне значення, яке може бути задане константою, змінною, виразом цілочисельного або дійсного типів.

За формату R:p - в крайні праві позиції виводиться значення R в Е-формі з нормалізованою на одиницю мантисою. Мінімальна довжина поля 8 символів для від’ємного значення та 7 - для додатного. Після десяткової крапки виводиться хоча б одна цифра.

Приклади:

Значення R Звернення до Результат

процедури write

511.04 write(R:15) 5.110400000E+02

-511.04 write(R:15) -5.11040000E+02

46.78 write(-R:12) -4.67800E+01

37.5648 write(R:5) 3.8Е+01

37.5648 write(R:8) 3.78Е+01

-37.5648 write(R:8) -3.8Е+01

В форматі R:p місця для знаку додатного значення не виділяється. При виведенні значення на екран в цьому форматі відбувається заокруглення за правилами математики.

За формату R:p:q - в праві позиції поля з р знакомісць виводиться значення R в F-формі з q цифрами після крапки. Якщо q=0, то не виводиться ні дробова частина значення R, ні десяткова крапка. При q>24 значення виводиться в формі R:p. Якщо для заданого р не вистачає знакомісць для q дробових цифр, то поле для виведення значення R збільшується до необхідних розмірів.

Приклади:

Значення R Звернення до Результат

процедури write

511.04 write(R:15:4) _ _ _ _ _ _ _511.0404

-511.04 write(R:15:2) _ _ _ _ _ _ _ _-511.04

46.78 write(R:12:0) _ _ _ _ _ _ _ _ _ _ 47

37.5648 write(R:5:4) 37.5648

37.5648 write(R:8:25) 3.78Е+01

-37.5648 write(R:8:27) -3.8Е+01

0.0000056 write(R:8:3) _ _ _0.000

0.0000056 write(R:8:6) 0.000006

Якщо формат невказаний, то виведення дійсних значень здійснюється в Е-формі. Кількість розрядів мантиси і порядку залежить від версії Turbo Pascal і від типу дійсного значення.

Так, наприклад, в Turbo Pascal 7.0 для значення дійсного типу real відводиться 17 знакомісць. Перше зліва знакомісце використовується для зображення знаку значення (знак + не виводиться, але місце для нього зберігається), друге знакомісце відводиться для цілої частини нормалізованої на одиницю мантиси, третє знакомісце – десяткова крапка. Знакомісця 14-17 відводяться для виведення символу Е, знака порядку, порядку. Всі решту знакомісць відводяться для дробової частини мантиси.

Приклади:

Значення R Звернення до Результат

процедури write

34.58 write(R) _3.4580000000Е+01

-34.58 write(R) -3.4580000000Е+01

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