Автор: Пользователь скрыл имя, 14 Сентября 2013 в 20:01, лабораторная работа
Алгоритмічна мова Паскаль (Pascal) названа на честь французького математика XVII ст. Блеза Паскаля, який був творцем першої механічної обчислювальної машини. Автор мови — професор Федерального технічного університету (Швейцарія) Ніклаус Вірт; мова створена в 1970 році як інструмент для навчання студентів навичок програмування.
Перше діалогове середовище підготовки та виконання програм на мові Паскаль було створено в 1983 році.
У мові програмування Паскаль реалізовані операції відношеня: > — «більше»; < — «менше»; = — «дорівнює»; <> — «не дорівнює»; >= — «не менше»; <= — «не більше»; та логічні операції: not — «ні»; and — «і»; or — «або».
Висловлювання — це деяке твердження, ві д н ос но якого можна сказати, що воно або істинне, або хибне. Таким чином, кожному висловлюванню можна приписати «0» (хибне) або «1» (істинне). Приклад: «5 — просте число» — істинне, «2 = 3 + 5» — хибне висловлювання.
За допомогою
логічних операцій можна будувати з
одного висловлювання інші. Побудова
з даного (даних) висловлювання нового
висловлювання називається
Таблиці істинності для операцій «інверсії» (заперечення), «кон’юнкції» (логічне множення, або логічне «і»), диз’юнкції (логічне додавання, або логічне «або»).
А |
B |
A and B («і») |
A or B («або») |
not A («ні») |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
Логічні вирази — це вирази, що складаються з висловлювань, які можуть бути з’єднані логічними зв’язками. Ці вирази набувають логічного значення («хибне» або «істинне»). Логічні вирази можуть бути простими та складеними. У простому логічному виразі використовуються змінні та константи логічного типу, операції порівняння. Зв’язка простих логічних виразів за допомогою логічних операцій утворює складений логічний вираз. Прості вирази записуються в складених виразах у круг лих дужках.
Циклічні програми
Циклічними програмами називають програми, в яких реалізовано команди циклу.
У Паскалі передбачено три різновиди операторів циклу: цикл із передумовою, цикл з післяумовою, цикл із лічильником (із покроковою зміною аргументу). Також реалізована робота із вкладеними циклами. Вкладені цик ли — циклічні процеси, що допускають укладеність одних циклів в інші.
Цикл із передумовою (або цикл-«поки») — це цикл, у якому тіло циклу виконується тільки у разі виконання умови, заданої перед тілом циклу. Якщо умова стає невірною, то робота циклу припиняється і керування передається оператору, наступному за оператором циклу.
На мові Паскаль оператор циклу з перед умовою ще називається «циклом While-Do».
WHILE <умова> DO <оператор>;
Приклад: обчислення суми перших 100 натуральних чисел методом послідовного додавання.
m:=1; S: =0;
WHILE m<=100 DO
Begin
S:=S+m;
m:=m+1;
end;
Цикл
із післяумовою (або цикл-«до») — це цикл, у
якому тіло циклу виконується доти, поки
умова, задана після тіла циклу, не стане
правильною. Якщо умова стає правильною,
то робота циклу припиняється й управління
передається оператору, наступному за
оператором циклу.
На мові Паскаль оператор циклу з після
умовою ще називається «цикл Repeat-Until».
REPEAT <оператор> UNTIL <умова>;
Приклад: обчислення суми перших 100 натуральних чисел методом послідовного додавання.
m:= 0; S: = 0;
REPEAT
m:=m +1;
S:=S+m;
UNTIL m >= 100;
Цикл із лічильником (із покроковою зміною аргумен ту) — це цикл, у якому тіло циклу виконується заздалегідь відому кількість разів. У різних алгоритмічних мовах реалізація цього циклу може передбачати використання аргументів різних типів, зміну аргументу на різний крок, діапазон зміни аргументу і т. д.
Цикл із лічильником аргументу реалізовується таким чином:
1) аргументу надається початкове значення;
2) якщо значення входить у заданий діапазон, то виконується тіло циклу;
3) аргумент змінюється на заданий крок; виконується 2);
4) якщо значення
не входить у заданий діапазон,
то виконання циклу
У мові Паскаль
реалізовано два оператори
FOR <лічильник циклу>:=<початкове значення> TO <кінцеве значення >DO<оператор>; (цикл з кроком 1),
FOR <лічильник
циклу>:=<початкове значення>
де <лічильник циклу> — змінна порядкового типу,
<початкове значення> і <кінцеве значен ня> — вирази того самого типу, що і <лічильник циклу> (діапазон зміни лічильника циклу),
<оператор> —
простий або складовий
Приклади: обчислення суми перших 100 натуральних чисел методом послідовного додавання.
а) S: =0;
for m:=1 to 100 do
S:=S+m;
б) S: =0;
for m:=100 downto 1 do
S:=S+m;
Під час реалізації циклу з покроковою зміною аргументу в Паскалі необхідно заздалегідь знати про кількість повторень тіла циклу і пам’ятати про можливість зміни лічильника циклу тільки на 1 або –1.
Масиви даних
Масив — це структурована сукупність фіксованої кількості елементів одного типу, доступ до яких здійснюється за допомогою індексів. Елементи масиву називаються індекс ними змінними. За кількістю індексів, які треба вказати для доступу до окремого елемента масиву, розрізнюють одновимірні, двовимірні, ..., n-вимірні масиви. Вимоги до індексів різні в різних алгоритмічних мовах. У Паскалі індекс — це змінна порядкового типу.
Опис масиву містить ім’я масиву (ідентифікатор), принцип індексації елементів (діапазон зміни індексів), тип елементів масиву.
VAR <ім’я_масиву>: ARRAY <діапазони зміни індексів> OF <тип_даних>;
Масив називається одновимірним (лінійна таблиця), якщо для доступу до його елементів достатньо одного індексу.
Наприклад, одновимірний масив із 8 дійсних чисел у Паскалі можна оголосити таким чином:
• VAR Name: ARRAY [1..8] OF real;
• Const N=8;
VAR Name: ARRAY [1..N] OF real;
• TYPE MASSIV = ARRAY [1..8] OF real;
VAR Name: MASSIV;
Масив називається двовимірним (матриця), якщо для доступу до його елементів необхідно вказати значення двох індексів. Перший індекс вказує номер рядка, а другий — номер стовпця в цьому рядку.
При розподілі пам’яті в описовій частині програми під масив резервується стільки місця, скільки передбачає вказана кількість елементів масиву, враховуючи тип елементів. Межі зміни індексів повинні бути сталими величинами, а не змінними, інакше буде невідомо, скільки місця необхідно відвести в пам’яті для такого масиву.
У пам’яті комп’ютера елементи одновимірних масивів розташовано послідовно. Двовимірні масиви розташовуються таким чином: спочатку елементи першого рядка, потім другого і т. д.
Роботу з масивами можна умовно поділити на три частини:
• формування масиву;
• опрацювання масиву;
• виведення масиву.
Формування масиву. Формування значень елементів масиву можна виконувати у такий спосіб:
• уведення значень елементів масиву з клавіатури або з файла;
• формування значень випадковим чином, з використанням функції-генератора випадкових чисел Random;
• обчислення значень елементів масиву за формулою.
Опрацювання масиву. Класичними задачами для роботи з масивами можна назвати:
• пошук заданого елемента в масиві;
• знаходження суми (добутку) елементів масиву;
• пошук максимального (мінімального) елемента в масиві;
• упорядкування масиву за ознакою (наприклад за зростанням або спаданням та ін.).
Одним із найскладніших завдань є впорядкування елементів масиву. Для розв’язання цієї задачі існує декілька алгоритмів.
Сортування вибором:
1. Установити
номер найбільшого елемента
2. Поміняти місцями
найбільший і останній
3. Повторити 1 і 2 над остачею масиву (без останнього елемента).
Застосовувати цей метод до елементів масиву, що залишилися, доки залишок не скоротиться до одного елемента.
Аналогічно сортування вибором можна застосувати до найменшого елемента, міняючи його з першим. У результаті все одно отримаємо зростаючу (незменшувану) послідовність елементів масиву.
Обмінне сортування («бульбашка»):
1. Порівняти
два поруч розташованих
2. Якщо пара
порушує потрібний порядок
Порівняння відбувається до кінця масиву. Обмін здійснюється доти, поки прохід по масиву не викличе жодного обміну.
Існують й інші методи сортування масивів: метод уставки, швидке сортування тощо.
Виведення масиву.
Виведення елементів
For i:=1 to n do Write (mas[i]);
або у стовпчик:
For i:=1 to n do Writeln (mas[i]).
Для виведення елементів двовимірного масиву у вигляді двовимірної таблиці (матриці) можна використовувати таку конструкцію:
For i:=1 to n do
Begin
For j:=1 to m do
Write (mas[i,j]);
Writeln;
End.
Робота з текстовою інформацією
У Паскалі при роботі з текстовою інформацією існує можливість обробки одиночних символів типу Char та послідовності символів — рядків типу String.
Символьний тип. Тип Char — це один з базових типів мови, призначений для збереження та опрацювання одного символу. Множиною його значень є окремі символи (букви, цифри, знаки), впорядковані у відповідності із розширеним набором символів ASCII-коду. Змінна цього типу займає 1 байт пам’яті. Завдяки тому що в пам’яті машини символи зберігаються у вигляді кодів (більшим вважається той символ, чий код більший), їх можна порівнювати. Для символів припустимі всі операції порівняння: <, <=, =, >, >=, <>.
Опис даних символьного типу:
Const Name1 = ‘v’; — опис символьної константи,
Var Name2: CHAR; — опис символьної змінної.
Як правило, значення для символьних змінних та констант задаються в лапках, наприклад, ‘f’, ‘1’, ‘+’. Також можна задати значення, вказавши безпосередньо числове значення ASCII-коду, поставивши перед цим числовим кодом знак #, наприклад, #35, #102.
У Паскалі для
роботи з символьною інформацією
реалізовані функції
SUCC(S) = CHR(ORD(S) +1);
PRED (S) = CHR(ORD(S) –1).
Для латинських
літер ‘a’..‘z’ виконується
Рядковий тип. Тип String — тип даних, призначений для збереження та опрацювання послідовності символів. Рядок можна розглядати як особливу форму одновимірного символьного масиву.
Опис даних рядкового типу:
Const Name1=‘computer’; — опис рядкової константи,
Var Name2: STRING; — опис рядкової змінної,
Name3: STRING [20]; — опис рядкової змінної заданої довжини,
За умовчанням довжина рядкової змінної дорівнює 255 символам, але можна обмежити довжину рядка за допомогою явної вказівки довжини рядка.
У Паскалі реалізовано опрацювання рядків двома шляхами: опрацювання рядка як єдиного цілого та як об’єкта, який створюється з окремих символів.
Перший шлях надає можливість:
• присвоєння рядковій змінній за одну операцію цілого рядка символів, наприклад, Name2:=‘computer’; Name3:=‘science’;
• об’єднання рядків у довільному порядку за допомогою операції «+» (операції скріплення, об’єднання), наприклад,
Name3:= ‘computer’+‘science’;
Name3:= Name2 + Name3;
• порівняння рядків за допомогою операцій порівняння: <, <=, =, >, >=, <>, наприклад,
If Name3 <> Name2 then write (‘no’);
Другий шлях надає можливість до кожного окремого символу рядка звертатися за його номером позиції як до елемента масиву за індексом, наприклад,
Name3:= Name2 [6] + Name2 [2] + Name2 [4];
Елемент з нульовим індексом містить символ, код якого вказує на дійсну довжину даного рядка.
У Паскалі реалізовані
процедури і функції для
Информация о работе Основи розробки програмного забезпечення за допомогою мови програмування Pascal