Масиви у мові Паскаль - Інформатика, програмування

Федеральна агенція з освіти

ГОУ ВПО Тульський державний педагогічний

університет ім. Л.М. Толстого

"Масиви у мові Паскаль"

студентка 3 курсу

групи Б, ф-та МФіІ

1. Види масивів

1.1. Одновимірні масиви

1.2. Приклади завдань

1.3. Двовимірні масиви

1.4. Приклади завдань

2. Сортування масивів

2.1Метод простих обмінів (Пухирцеве сортування)

2.2. Сортування простим вибором

2.3 Сортування простим включенням (Метод вставки та зсуву)

3. Параметри-масиви та параметри-рядки

Існують різні типи даних у мові Паскаль. Розглянемо похідні типи. Кожне значення кожного з цих типів у випадку є вже нетривіальну структуру, тобто. зазвичай це значення має більш як одну компоненту. У цьому кожна компонента структури то, можливо як окремим даним, і у своє чергу нетривіальною структурою, тобто, значенням будь-якого з похідних типів. Таким чином, значення похідних типів у випадку мають ієрархічну структуру, на нижньому рівні якої фігурують лише окремі дані. Цим компонентам нижнього рівня можуть надаватися значення і вони можуть бути присутніми у виразах, як і значення змінних скалярного типу. Дані, що є значеннями скалярних типів, займають порівняно мало місця у пам'яті ЕОМ. Окрема літера, наприклад, зазвичай є одним байтом (8 двійкових розрядів). Для чисел різних типів залежно від реалізації відводять кілька байтів. А дані, що становлять значення похідного типу, зазвичай займають значний обсяг пам'яті ЕОМ. У зв'язку з цим при написанні програм для ЕОМ, що мають порівняно невеликий обсяг пам'яті,постає проблема економного її використання. У паскалі передбачено можливість вказівки транслятору на необхідність економного уявлення значень похідних типів. Для цього завдання похідного типу необхідно розпочати зі службового слова packed, що означає упакований. Але ввівши вимогу на упакованість даних, необхідно чітко уявляти, що, з одного боку, ця вимога не завжди може бути виконана транслятором (якщо, наприклад, більш економного уявлення, ніж звичайне невпаковане подання для даних цього типу, в ЕОМ просто не існує) . А з іншого боку, якщо воно можна здійснити, то призводить до збільшення часу виконання програми. Пояснимо на прикладі, за рахунок чого це відбувається. Як зазначалося раніше, одна літера займає один байт. Машинна осередок пам'яті, з якою працюють команди ЕОМ, у випадку складається з кількох байтів. Тому, якщо в комірку помістити одну літеру, го більша її частина не буде використана. Насправді в один осередок можна помістити кілька літер (упаковане уявлення). Але тоді щоразу, коли необхідно виконати дію над окремою літерою, доведеться проводити виділення цієї літери з комірки (розпаковування літери з комірки). Аналогічно, при записі окремої літери на згадку про машину доведеться визначати те місце в комірці, куди її необхідно помістити, і заносити літеру саме туди, не змінюючи вміст інших розрядів (запаковка літери в комірку). Такі додаткові дії можуть зайняти значну частину загального часу роботи програми. Тому приймати рішення про використання упакованого подання даних повинен завжди програміст, залежно від конкретних умов та цілей, які він переслідує. Отже, значення похідних типів можуть бути представлені в пам'яті ЕОМупакованому та невпакованому вигляді. Запаковане уявлення вимагає, власне кажучи, меншого обсягу пам'яті, але уповільнює процес виконання програми. Ми розглянемо найбільш уживаний похідний тип, а саме регулярний тип. Значення регулярного типу зазвичай називають масивом. Отже, масив - це впорядкований набір фіксованого кількості деяких значень (компонент масиву). Усі компоненти повинні бути одного і того ж типу, який називають типом компонента або базовим (для масиву) типом.

Тип даних Масив дозволяє одному ідентифікатору задати кілька значень, які відрізняються порядковим номером. Номер елементу масиву вказується після ідентифікатора у квадратних дужках. При описі масиву вказується діапазон номерів елементів масиву та тип, до якого належить кожен елемент. Масиви можуть бути одно-, дво- та багатовимірними.

Мал. Зображення одно-, дво- та тривимірних масивів.

Приклад опису та заповнення елементів масиву.

M: array [1..5] of integer;

M1: array [2..3,11..15] of char;

1. Види масивів 1.1 Одновимірні масиви

Кожному конкретному масиву, що використовується в програмі, має бути дано своє ім'я. Це ім'я називатимемо повною змінною, оскільки її значення є весь масив. Кожна компонента масиву може бути явно позначена шляхом вказівки імені масиву, за яким слідує селектор компоненти - взятий у квадратні дужки індекс, що задає правило обчислення номера потрібної компоненти. Ця відмінність від звичного запису індексу в математиці, коли він вказується праворуч у нижній позиції, пояснюється необхідністю використання лінійного запису програми, тому багаторівневий запис має бути виключений. При посиланні на компоненти масиву індекс записується одному рівні з ім'ямі полягає у квадратні дужки. Таким чином, для посилання на окремі компоненти використовується запис виду (ім'я масиву) [ ] яку називатимемо частковою змінною (оскільки її значенням є не весь масив, а окрема його компонента, номер якої задається індексом) — стосовно масивів вона називається змінною з індексом . У прикладі масив отримає ім'я v, а посилання окремі його компоненти виробляються з допомогою часткових змінних v[ 1], v[2], . v [1ОО]. У загальному випадку як індекс може бути використане вираз, значення якого і визначає номер компоненти масиву. При цьому важливо, що індексний вираз можуть входити змінні, так що при зміні їх значень змінюється і значення індексу, яке визначає номер компоненти масиву. Таким чином, та сама змінна з індексом у процесі виконання програми може позначати різні компоненти масиву. Тип значення індексного виразу називають типом індексу. Безліч значень типу індексу має бути перенумерованою безліччю, тим самим визначаючи кількість компонентів та їх упорядкованість. При заданні регулярного типу, крім типу індексу, необхідно задати тип компонент. Завдання такого регулярного типу, як одновимірний масив, тобто. вектор, має вигляд:

аrrау [(тип індексу)] оf де - ім'я або завдання типу.

1.2 Приклади завдань

Завдання 1. Даний лінійний масив цілих чисел. Підрахувати, скільки у ньому різних чисел.

ІДЕЯ РІШЕННЯ: заводимо допоміжний масив, елементами

якого є логічні величини (False - якщо елемент

вже зустрічався раніше, True - інакше)>

Var I, N, K, Kol: Integer;

A: Array [1..50] Of Integer;

Lo: Array [1..50] Of Boolean;

Write('Введіть кількість елементівмасиву: '); ReadLn(N);