Слайд 2План
Поняття масиву (array): опис типу, дії над елементами масиву, головні прийоми і
типові алгоритми опрацювання масивів.
Поняття двовимірного масиву: створення і виведення двовимірних масивів, типові задачі, які приводять до використання масивів.
Рядки (string) та дії з ними. Функції та процедури для дій з рядками.
Поняття про запис (record), його опис. Команда приєднання (with).
Слайд 3Типи даних, які конструюються з окремих частин, елементів, компонентів, тобто які мають
внутрішню структуру, називаються складними або структурованими.
Наприклад, масиви, рядки, записи, множини.
Слайд 5Приклад
−5 − 10.5 −14.2 … − 4.3
t[1]= −5;
t[2]= −10.5;
t[3]= −14.2;
t[31]= −4.3;
Слайд 6 Масив (array) – це скінчений набір елементів одного (базового) типу, які зберігаються
в послідовно розташованих комірках оперативної пам'яті і мають спільну назву.
Масив даних характеризується іменем, кількістю елементів і типом елементів.
Ім'я масиву надає користувач. Елементи визначають тип масиву.
Слайд 7 Кількість елементів (розмір) масиву найчастіше задають у вигляді діапазону або назви деякого
перерахованого типу даних.
Кожний елемент масиву можна відшукати, знаючи його номер та ім'я масиву.
Номер елемента масиву називається індексом. Причому індексом можуть бути тільки елементи перерахованого типу. Причому не тільки константи, а й довільні вирази перерахованого типу.
Наприклад, a[5], a[i+1].
Слайд 8Опис типу масив у розділі type
type <назва типу> = array [розмір]
of <назва базового типу>;
Наприклад,
type temp = array [1..28] of real;
Слайд 9Опис типу масив у розділі var
var <назва типу>: array [розмір] of <назва
базового типу>;
Наприклад,
var temp: array [1..28] of real;
Слайд 10Приклад
var Students: array [2003..2009] of integer;
Students [2005]=151; - 3-ій елемент масиву
Students [2007]=154;
- 5-ій елемент масиву
Слайд 11Зауваження
Нумерувати елементи масиву можна з нуля або будь-якого іншого цілого числа.
Значення індексу
не завжди збігається з номером елемента. Щоб вони збігалися, нумерацію елементів потрібно починати з одиниці.
Слайд 12З елементами масиву можна виконувати такі дії:
введення даних (цикл);
надання елементам масиву певних
значень (операція присвоєння);
виведення даних (операції write, writeln);
інші операції, які визначені над даними відповідного типу.
Слайд 13Етапи опрацювання масивів
Заповнення масиву даними (введення даних у масив).
Перетворення масиву (дії з
даними).
Виведення масиву або окремих даних на екран.
Слайд 15Приклади двовимірних масивів
Фрагмент учнівського табеля за два семестри з 5 предметів:
І ІІ
математика 8 9
рідна мова 9 10
історія 7 9
фізика 8 9
географія 10 9
Слайд 16Загальний вигляд масиву даних з n рядків та m стовпців (у математиці
такий масив називається матрицею):
Слайд 17Оголошення двовимірного масиву
Якщо двовимірний масив має n рядків та m стовпців, то
у розділі type його описують так:
type MyMassiv=array [1..n,1..m] of <базовий тип>;
або у розділі оголошення змінних:
var a: array [1..n,1..m] of <базовий тип>;
Слайд 18Створення і виведення двовимірних масивів
Проте у пам’яті комп’ютера елементи масиву розташовані в
послідовних комірках рядок за рядком, а саме:
b[1,1], b[1,2],…, b[1,n], b[2,1], b[2,2],…, b[m,1], …, b[m,n].
Слайд 19Опрацювання двовимірних масивів
Двовимірні масиви створюють і виводять на екран у вигляді таблиці
за допомогою вкладених циклів for.
Опрацьовують двовимірні масиви поелементно за допомогою алгоритмічної конструкції “вкладені цикли”. Наприклад, ввести дані з клавіатури у двовимірний масив з n рядків та m стовпців можна так:
write (‘Ведіть дані в масив:’);
for i:=1 to n do
for j:=1 to m do
begin
write (‘ b [ ‘ , i , ’ , ’ , j ,’ ]=‘);
read ( b [i, j] );
end;
Слайд 20Типові задачі, що ведуть до використання масивів
визначення суми елементів масиву (наприклад,
обсягу випущеної продукції протягом року; кількості балів, набраних студентом за семестр з деякої дисципліни; вартості продуктів у магазині тощо). Для цього потрібно додати всі елементи деякого числового масиву;
визначення середнього значення (наприклад, середньодобової t˚ протягом місяця; рейтингу студента; середньомісячної зарплатні тощо). Для цього потрібно додати всі значення елементів масиву і розділити результат на кількість елементів масиву;
визначення максимального або мінімального елементу масиву (методом перегляду і порівняння всіх елементів);
визначення номера максимального або мінімального елементу масиву;
пошук у масиві даних за певною ознакою;
впорядкування елементів масиву за певною ознакою тощо.
Слайд 22Дане типу рядок (string) - це послідовність довільних символів, тобто елементів типу
char.
Рядкові дані записують в одинарних лапках.
Наприклад:
‘Україна’; ‘235’; ‘?1abc’;
'' – порожній рядок нульової довжини;
' ' – рядок, що містить один символ (пропуск).
Слайд 23Опис змінних рядкового типу
у розділі опису констант.
Наприклад:const s='Bye!';
у розділі опису типів.
Наприклад: type t=string[10];
var top: t;
у розділі змінних:
var <список змінних>: string [n], де n – довжина рядка, яку можна не зазначати.
Слайд 24Операції, визначені над рядковими змінними
з‘єднання (+);
порівняння (<, <=, >, >=, =, <
>);
введення-виведення;
рядкові функції та процедури.
Слайд 25Порівняння рядків здійснюється зліва направо до перших різних символів, причому 'А' <
' B ',
' B ' < ' C ' тощо. “Більшим” вважається символ, який розташований в алфавіті правіше.
Функція ord дає числовий код символу. Наприклад, ord (' B ')=66; ord (' А ')=65.
Функція chr виконує зворотну дію:
chr(66)= ' B '.
Слайд 26Приклад
Нехай a1= 'New ', a2= ‘Year'.
Тоді a:= a1+a2= 'New Year' .
Доступ
до і-го символу текстового даного з іменем а можна отримати за допомогою виразу a[i]. Наприклад:
a[1]= 'N', a[4]= ' '.
Слайд 27Стандартні функції для дій з рядками
length (r) - визначає кількість символів у
рядку r;
copy (r, m, n) – дає n символів рядка r, починаючи з символу з номером m;
concat (r1, r2,…,rn) – з'єднує рядки r1, r2,…,rn в один рядок;
pos (r1, r2) – визначає номер символу, з якого починається входження рядка r1 у рядок r2.
Слайд 28Приклади
Функція Значення
length ('') 0
length (' ') 1
length ('інформатика') 11
copy ('інформатика', 1, 6) 'інформ‘
pos ('т', 'інформатика') 8
concat ('20',
‘10') '2010'
Слайд 29Стандартні процедури для дій з рядками
insert (r1, r2, n) – вставляє рядок
r1 у рядок r2, починаючи з позиції n;
delete (r, m, n) – вилучає n символів з рядка r, починаючи з позиції m;
str (<число>, r) – переводить числове дане в дане r (типу рядок);
val (r, s1, s2) – переводить рядкове дане в числове (засилає у числову змінну s1 числовий образ рядка r; s2 – індикатор помилки: якщо рядок r містить тільки числа, то процедура повертає значення s2, рівне 0; якщо рядок r містить крім цифр й інші символи, то s2 отримує числове значення, рівне номеру першого символу, що не є цифрою).
Слайд 30Приклади
Нехай а = 'інформатика'.
Процедура Значення змінної а
insert ('наука ', а, 1) 'наука інформатика'
delete
(а, 2, 4) 'іматика'
str (100, а) '100'
val ('23', a, р) a= 23, р=0
Слайд 31Способи опрацювання даних типу string
Опрацювати весь рядок як єдине ціле, застосовуючи
до нього функції та процедури для дій з рядками;
Розглядати рядок як масив, складений з елементів-символів, і опрацювати його за правилами роботи з елементами масиву.
Слайд 33Означення
Запис (record) – це структурований тип даних, призначений для збереження в оперативній
пам'яті й опрацювання даних про властивості об'єкта.
Запис складається з полів. Поля – це дані різних типів. У полях розташовуються компоненти складеного даного.
Слайд 34Опис типу даних record
Запис описують у розділі type чи var за допомогою
такої конструкції:
type <назва типу запису>=record
<назва поля 1> : <тип поля 1>;
........................................
<назва поля n > : <тип поля n>;
end;
Слайд 35Приклад 1
type Student = record
sname: string;
name: string;
kyrs: 1..5;
grypa: char;
born: 1980..1985;
serbal: real
end;
Слайд 36Приклад 2
type Address = record
city: string;
street: string;
house: integer;
flat: integer;
end;
Слайд 37Кожне поле в запису можна вважати звичайною змінною, якій можна присвоїти ім'я,
ввести або вивести її значення.
Звертатися до поля потрібно через складене ім'я так:
<назва запису> . < назва поля>
Слайд 38Приклади
Student.sname – прізвище студента;
Student.born – рік народження студента;
Address.flat – номер квартири.
Слайд 39Конкретні записи типу Student оголошують у розділі var так:
var Student1, Student2, Student3:
Student;
Наприклад:
Student1.name – ім'я 1-го студента;
Student2.serbal – середній бал 2-го студента.
Слайд 40Записи можуть бути елементами масивів.
Окремі поля записів також можуть бути записами. За
рахунок цього в Pascal можна створювати складні структури даних.
Слайд 41Приклад
type Anketa = record
facult: string;
group: 1..6;
fio: string;
address = record
k: longint;
city: string;
street: string;
house,
flat: integer
end;
born = record
date: 1..31;
month: 1..12;
year: 1980..1985
end;
end;
var Student: array [1..30] of Anketa;
Слайд 42Звертатися до елементів таких складних структур потрібно за складеним іменем.
Наприклад:
Student [5].address.city:=‘Вінниця’;
або
writeln (Student
[5].address.city);
Слайд 43Команда приєднання (with)
Команда приєднання дає змогу використовувати у програмі лише імена полів.
Загальний
вигляд команди приєднання:
with <ім'я змінної типу запис> do <команда>;