Житомирський Військовий Інститут
Національного Авіаційного Уніврситету
Оператори алгоритмічної мови Паскаль. Стандартні функції і оператори роботи з рядками
Житомир 2010
План
1. Прості оператори
2. Структурні оператори
3. Символьні масиви
4. Визначення рядкового типу даних
5. Основні операції над рядковими даними
6. Стандартні засоби обробки рядків: процедури і функції
1. Прості оператори
Оператори мови Паскаль – це синтаксичні конструкції, які призначені для запису алгоритму (перетворення даних, порядок виконання операцій) в стилі структурного програмування.
Всі оператори повинні розділятись символом – ";".
Оператори мови Паскаль умовно поділяють на дві групи:
1) прості оператори;
2) структурні оператори, які містять один або декілька операторів, або структурних операторів.
1. Оператор присвоювання;
2. Оператори звертання до процедури (функції);
3. Оператор безумовного переходу.
Оператор присвоювання призначений для обчислення нового значення змінної, а також для визначення значення функції, що повертається.
Формат оператора:
Оператор виконується так: обчислюється вираз (права частина) і отримане значення надається (присвоюється) ідентифікатору (змінній).
При цьому тип виразу (тип даних та операції над ними) повинен бути сумісним з типом ідентифікатора (змінної), якому присвоюється результат обчислення.
Наприклад: якщо var a, b, x: integer, то оператор присвоювання
виконувати не можна.Треба так:
var a, b : integer;
x : real;
Тоді буде вірно:
.Приклади:
1. var name: string;
. . .
name : = ‘Іванов‘;
2. var x, y: real;
. . .
x: = 5;
y: = x + 2;
Оператори звертання до процедури (функції) – призначені для активізації процедури (функції) та передачі їй заданих параметрів.
Формат оператора:
Розглянемо процедури введення та виведення даних, які можна викликати за допомогою операторів: read, readln, write, writeln.
write (вираз), writeln (вираз) – оператори запису або виведення;
read (список змінних), readln (список змінних) – читання або введення.
Приклади виведення:
1. x : = 1;
writeln(1+x);
writeln(x <=1);
на екрані з’явиться:
2
true
2. x: = 2;
writeln(1, x, x*x, x*x >2);
на екрані :
1 2 4 true
3. Використання рядкових констант, наприклад: ‘x =’, ‘12’ і т.п.
x : = 2;
writeln(‘x = ‘, x,’; y = ‘, x*x);
На екрані:x = 2; y = 4.
4. Можна указати розмір поля для виводу значень виразу.
Якщо кількість символів менше, то виводяться пробіли, а якщо більше – то виводяться усі символи.
x: =12;
writeln(‘x =’, x : 4,’; y = ‘, x*x : 1);
x =_ _ 12; y = 144 .
Приклади введення.
5. Як правило, для зручності перед оператором введення ставиться оператор виведення на екран запрошення:
writeln (‘Ввести два цілих числа:’);
readln (x1, x2);
На екрані запрошення:
Ввести два цілих числа:
6. Приклад програми привітання.
Program Privit;
var name: string;
readln(name);
writeln(‘Привіт,’, name);
end.
Оператор безумовного переходу.
Мітка описується на початку програми (label 1, 2, lb1) і використовується в програмі наступним чином:
Але використання цього оператора в програмі не бажане, бо порушується її структурна цілісність і читабельність.
2. Структурні оператори
Структурні оператори містять один або декілька операторів. Вони поділяються на три види:
1. складений оператор;
2. умовні оператори;
3. оператори циклу.
Складений оператор представляє собою послідовність операторів, які розділяються ";" і обмежуються службовими словами begin та end. Вони відіграють роль дужок обмеження – операторні дужки початку і кінця складеного оператора).
оператор 1;
……………
оператор N
Складений оператор сприймається як єдине ціле.
Умовні оператори – організовують вибір між альтернативними варіантами обчислень (операцій)
Структура оператора:
if <умова (вираз)>
then<оператор1>
else<оператор2>
Семантика оператора:
1. обчислюється умова, тобто вираз після службового слова if (результат повинен мати логічний тип, булевий);
2. якщо результат умови – TRUE (істина) то виконується then <оператор1>; якщо результат умови FALSE – то виконується else <оператор2>.
Оператори 1, 2 можуть бути будь-якого типу: умовні, складені, прості.
Умова може бути операцією відношення або логічною.
Операції відношення:= , <>, >, <, >=, <=.
Логічні оператори:
Not – заперечення;
And – логічне "і";
Or – логічне "або";
Xor – "або", що виключає.
Приклад:
Вибір максимального із двох чисел:
if x>y
!Особливість:! При використанні вкладених умовних операторів може виникнути синтаксична неоднозначність. Тому необхідно пам’ятати: службове слово else зв’язане з найближчим до нього словом if.
Приклад:
var a, b, c: integer;
a:=1; b:=2; c:=3; d:=4;
if a>b then
if c<d then
if c<0 then c:=0
else a:=b;
На екрані виведеться {a = 1}.
if a>b then
if c<d then
if c<0 then c:=0
else
else
else a:=b;
На екрані виведеться {a = 2}.
Оператор вибору: CASE.
Він дозволяє вибрати одну з N можливих операцій.
Синтаксична діаграма:
Список альтернатив:
Приклад:
Program month(input, output);
var mon: integer;
begin
writeln (‘Введіть N місяця’);
readln (mon);
if mon < 1 or mon > 12 then
writeln (‘Нема такого місяця’)
else
case mon of
1: writeln (‘січень‘);
2: writeln (‘лютий‘);
. . .
12: writeln (‘грудень‘);
end
end.
!Особливість:! значення селектора не може мати тип: real; string; частину else можна опускати.
3. Оператори циклу.
Існують три різних оператора:
1. Оператор циклу з параметром
For , To , Do (для , до , виконати )
Семантика:
1. Обчислюється вираз < пз >
2. Присвоювання < пц > : = < пз >
3. Перевірка умови < пц > <= (=>) < кз > , якщо не виконується , то for закінчує роботу ;
4. Виконання < оператора >;
5. Змінна < пц > на + 1 (to) або – 1 (down to)
Приклад: програма введення вільного цілого числа N та обчислення суми цілих чисел від 1 до N.
Program summaInteger;
var i, n, s: integer;
begin
write ( ‘ n = ‘ );
readln ( n ); { ввести n }
S: = 0; { початкове значення суми }
for i: = 1 to n do s : = s + i;
writeln (‘Сума дорівнює ’, S)
end.
. . . . . .
S:=0
if n >=1 then
for:=1 to n do s:= s+i
else
for i:= -1 down to n do s:= s+i
2.Оператор циклу з передумовою.
{поки (виконується), робити }
< умова>- вираз логічного типу; якщо результат умови – TRUE, то виконується оператор, після чого знову перевірка умови. Якщо – FALSE , оператор WHILE закінчує свою роботу.
Приклад: обчислити суму перших 25 цілих чисел.
Program summa;
var sum, n: integer;
begin
sum:=0;
n:=1;
while n<26 do
begin
sum:= sum+ n;
n:=n+1;
end;
writeln (‘Сума перших 25 цілих чисел’, sum)
end.
3.Оператор циклу з постумовою.
Семантика:
1.Виконується оператор циклу;
2.Перевірка умови:
- якщо false => наступне виконання оператора;
- якщо true => оператор циклу не виконується.
Приклад (для попереднього прикладу):
repeat
sum:=sum+n;
n:=n+1 until n>=26
3. Символьні масиви
Символьний тип даних дозволяє працювати з окремими символами тексту. Для обробки більшої кількості текстових одиниць використовують символьні масиви або рядкові типи даних.
Розглянемо одномірні масиви, які складаються з елементів символьного типу (char). Наприклад:
var
S : array [ 1..12] of char;
Паскаль містить деякі додаткові засоби роботи з такими масивами:
1) Конкретні значення символьних масивів записують за допомогою зображення рядка та використання їх в присвоюванні та передачі параметрів:
S := ‘Приклад рядка’;
Зображення рядка будується з символів масиву і обмежується апострофами.
Якщо необхідно задати апостроф, то його подвоюють {‘ " ’}.
Допускають формування рядків з використанням десяткових кодів символів і спеціальних позначень: ( #7#17C^A^B…)
2) Для символьних масивів допускають операцію "+" – конкатенації (зчеплення, поєднання). Смисл операції полягає у формуванні нового символьного масиву, кількість елементів якого дорівнює сумі розмірів масивів – операндів, а значення елементів – елементи масивів, які розміщюються послідовно один за одним.
Приклад: