Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Практичне заняття №12




Масиви

Символьний тип (char)

Значення символьного типу (character – символ)є множиною всіх символів ПК. Кожен символ має код у диапазоні 0…255, так званий ASCII (American Standard Code for Information Interchange). Для зображення символів використовують апострофи: ‘A’, ‘B’, ’*’, ’”’, ….

Опис:

Var <ім’я >: char;

Символьні значення можна вводити, виводити, присвоювати, порівнювати (при порівнянні використовується порядковий номер коду ASCII).

Стандартні символьні функції:

сhr (код символу) – повертає відповідний символ;

ord (s) – повертає код символу S.

Тип переліку

Задається переліком тих значень, які він може отримати. Кожне значення іменується ідентифікатором і розташовується в круглих дужках через кому:

type season = (winter, spring, summer, autumn );

Значенням присвоюються порядкові номери: 0,1,2,3…255. Значення можуть бути тільки іменними. Їх можна присвоювати і порівнювати, але не можна уводити і виводити операторами read і write.

Тип – діапазон

Визначається як інтервал значень базового типу (раніше визначеного), яким може бути будь-який порядковий тип:

< ім’я > = <min значення >..< max значення >;

При визначенні типу-діпазона слід користуватись такими правилами:

a) .. – це один символ (без пробілу);

b) ліва границя не повинна перевищувати праву;

c) ім’я повинно бути правильним ідентифікатором (починатись з букви, не збігатися зі службовими словами, мати тільки латинські букви, цифри та підкреслення).

Наприклад: type day=1..31; letter='A'..'Z'.

Завдання:

1. Написати програму виведення на екран монітора таблиці кодів ASCII (American Standard Code for Information Interchange).

2. Написати програму виведення на екран монітора символу за його кодом.

3. Написати програму виведення на екран коду символу за його символом.

4. Яке значення отримає С у логічному виразі С = А and В за умови, що А = правда, В = неправда?

5. Скласти алгоритм відображення на екрані по 5 літер справа і зліва від букви "ж" через пробіл.

6. Написати програму виведення кодів чисел від 0 до 9.

7. Написати програму виведення латинської абетки для великих та маленьких літер відводячи кожній літері окремий рядок (наприклад, А а;).

Масиви – це набір даних (змінних) одного типу, які записані у пам’яті комп’ютера під однією назвою (назвою масиву), та складаються з фіксованої кількості елементів. Більш формально масив можна визначити, як упорядковану сукупність елементів певного типу, що адресуються за допомогою індексів.

Опис масиву можна виконувати як у розділі type,так і var.

1. У розділі типів (type):

type < ім’я масиву > = array [діапазон] of < тип компонента >;

(ідентифікатор) (тип індексу) (базовий тип)

Тип індексу (діапазон) – будь-який порядковий тип, зокрема LongInt. Тип компонента – будь-який тип ТР або інший масив.

2. У розділі змінних (var):

var < ідентифікатор >: array [діапазон] of < тип >;

Над змінними масивів можна виконувати операції присвоювання і порівняння.

Арифметичні дії, введення та виведення не можна виконувати над послідовностями, але можна над їх окремими елементами.

Елемент масиву виділяється конкретним значенням індексу.

Масив може бути одномірним, двомірним і т.д. Наприклад:

var mat:array [1..50] of integer – одномірний масив;

var mat2:array [1..10,1..20] of integer – двомірний масив.

Компоненти масиву позначаються mat[3] та mat[6] – для одномірнихмасивів, mat2[1,3] та mat2[5,8] – для двомірних. Першим елементом одномірного масиву буде mat[1], останнім mat[50]. Так і організовується доступ до елементів масивів.

Приклад:

Скласти алгоритм і розробити програму знаходження сум (доданків) двох масивів з п’яти елементів. Масив увести з клавіатури.

Program Sumarray;

var a,b,c:array[1..5]of byte;

x,y:word;

i:integer;

begin

for i:=1 to 5 do

begin

writeln ('Введіть два ',і,'-ші елементи масивів');

read (x,y);

a[i]:= x;

b[i]:= y;

end;

for i:= 1 to 5 do

begin

c[i]:= a[i] + b[i];

writeln(’c[’, i: 1, ’] = ’, c[i]: 2);

end;

end.

Завдання:

Скласти блок-схему алгоритму і програму на мові Turbo Pascal, зберегти файл, налагодити програму, виконати умови задані в табл. 29.

Таблиця 29

№ з/п Масив (розмірність) Завдання Умови та обмеження
  А(10) Визначити мінімальний елемент одномірного масиву А і його порядковий номер. Знайдений елемент і його порядковий номер вивести на екран дисплея. 0£аі£100
  В(8) Обчислити суму елементів масиву В. Результат обчислень вивести на екран дисплея. bі>0
  Х(10) Підрахувати кількість позитивних, негативних і нульових елементів масиву Х. Результати підрахунку вивести на екран дисплея. -9£хі£20
  Y(12) Підрахувати суми утворені позитивними і негативними елементами масиву Y. Результати розрахунку вивести на екран дисплея. -15£yі£20
  Z(N) Обчислити середнє арифметичне значення елементів масиву Z. Результати підрахунку вивести на екран дисплея. N=10, zi>0

Тема: Розробка програм роботи з фрагментами тексту.

Мета заняття: Отримати практичні навички роботи з символьними масивами та рядковими типами даних мови програмування Turbo Pascal.

Час: 2 год.

Навчальні питання:

1. Рядкові типи даних.

2. Стандартні засоби обробки рядків: процедури і функції

Методичні рекомендації

1. Рядкові типи даних

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

При використанні у виразах рядок обмежується апострофами. Кількість символів в рядку (довжина рядка) може динамічно змінюватись від 0 до 255.

Для визначення рядкових даних використовується ідентифікатор string, за яким у квадратних дужках указується максимальна довжина рядка (line:string[25]). Якщо значення не вказане, то за замовченням довжина рядка встановлюється 255 байтів.

Таким чином різниця між рядками і символьними масивами в тому, що рядки можуть динамічно змінювати свою довжину.

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

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

Формат опису рядкових даних у розділах type та var:

1.У розділі типів

type< ім’я типу >=string [max довжина рядка];

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

2. У розділі змінних

var< ідентифікатор >:string [maxдовжина рядка];

У разі присвоєння рядковій змінній виразу з довжиною більше ніж максимально допустимо для даної змінної, то символи за межами максимальної довжини не використовуються (вилучаються). Ця ситуація не є помилковою, тому переривання виконання програми у даному випадку не відбувається.

Основні операції над рядковими даними

1. Присвоювання (:=).

2. Введення (read).

3. Виведення (write).

4. Поєднання (зчеплення, конкатенації "+").

5. Порівняння (відношення =, <, >, <>, <=, >=).

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

Операція конкатенації

Використовується для зчеплення декількох рядків в один, причому довжина результуючого рядка не повинна перевищувати 255 символів (або вказану довжину N), інакше останні символи будуть відкинуті.

Наприклад: st:='a' + 'b';

st:=st+'c'; {на екрані st = abc}

writeln('st= ',st);

Операція порівняння (відношення)

Проводить порівняння двох рядкових операндів за допомогою стандартних операторів: =, <>, >, <, >=, <=.

Правила порівняння:

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

2. У менший по довжині рядок додаються символи значення CHR(0). Тому при однакових, символах короткий рядок завжди менше, ніж довгий рядок.

Результат виконання операції завжди має логічний тип і набуває значення true або false.

Приклад: 'A' (код літери А = 65) > '1' (код 1 = 49) true

'AB' ='A' false

'ABC' > 'AB' true

' " ' < '.' true

2. Стандартні засоби обробки рядків: процедури і функції

Функції:

1. Concat(S1,S2,…,SN) – функція типу string. Виконує послідовне поєднання рядків S1,S2,…,SN, кожен з яких є вираз рядкового типу (string). Результатом є рядок не більше 255 символів. Дана функція еквівалентна операції конкатенації ‘S1’ + ‘S2’ + ‘S3’…

2. Copy(st, index, count) – функція типу string. Функція копіює (повертає) частину рядка, виділеного з рядка st, довжиною count символів, починаючи з символу під номером index.

3. Length(st:string) – функція типу integer повертає довжину рядка.

4. Pos(subst, st:string) – функція типу byte. Функція шукає у рядку st рядок subst. Результатом є номер позиції, де рядок subst зустрічається перший раз. Якщо рядок subst не знайдено, то результатом буде 0 (нуль).

5. Upcase(ch) – функція типу char. Повертає для символьного виразу ch, який повинен являти собою рядкову (маленьку) латинську букву та відповідно їй велику букву. Якщо значенням функції ch є будь-який інший символ (в тому числі рядкова літера російського алфавіту), функція повертає його без змін.

Процедури:

1. Delete(st, index, count) – процедура вилучає (знищує) count символів у рядку st починаючи з символу під номером index.

2. Insert(subst, st, index) – процедура вставляє рядок subst у рядок st, починаючи з символу під номером index.

3. Str(x [:width[:decimals]], st) – процедура перетворює число х (real або integer) у рядок символів st так, як це робить процедура writeln перед виводом. Параметри width і decimals (якщо вони присутні, тобто дужки [ ] показують на необов’язковість цих параметрів) задають формат перетворення: загальну ширину поля для зображення числа х (width) та кількість символів дробової частини (decimals), якщо x:real.

4. Val(st, x, code) – процедура перетворює рядок символів st у значення числової змінної x (визначеного типу). Параметр code = 0, якщо перетворення пройшло успішно, тоді x дорівнює результату перетворення. Якщо виявляється помилковий символ у рядку st, то значення х не змінюється, а code дорівнює номеру позиції з помилковим символом.

Примітка: недопустимими є пропуски (пробіли) праворуч від числа у рядку st!

val('123_ _', x, k) {помилка, x – не змінюється, k=4 };

val('_ _123', x, k) {вірно, x=123, k=0 };




Поделиться с друзьями:


Дата добавления: 2015-05-24; Просмотров: 406; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.043 сек.