РефератыИнформатикаОпОператори алгоритмічної мови Паскаль Стандартні функції і оператори роботи з рядками

Оператори алгоритмічної мови Паскаль Стандартні функції і оператори роботи з рядками

Житомирський Військовий Інститут


Національного Авіаційного Уніврситету


Реферат на тему:

Оператори алгоритмічної мови Паскаль. Стандартні функції і оператори роботи з рядками


Житомир 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
;


begin
write(‘Введіть ваше ім‘я’);

readln
(name);


writeln
(‘Привіт,’, name);


end
.


Оператор безумовного переходу

.



Мітка описується на початку програми (label 1, 2, lb1) і використовується в програмі наступним чином:



Але використання цього оператора в програмі не бажане, бо порушується її структурна цілісність і читабельність.


2.
Структурні оператори


Структурні оператори містять один або декілька операторів. Вони поділяються на три види:


1. складений оператор;


2. умовні оператори;


3. оператори циклу.


Складений оператор
представляє собою послідовність операторів, які розділяються ";
" і обмежуються службовими словами begin
та end
. Вони відіграють роль дужок обмеження – операторні дужки початку і кінця складеного оператора).


BEGIN

оператор 1;


……………


оператор N


END.

Складений оператор сприймається як єдине ціле.


Умовні оператори
– організовують вибір між альтернативними варіантами обчислень (операцій)


Структура оператора:


if

<умова (вираз)>


then

<оператор1>


else

<оператор2>


Семантика оператора:


1. обчислюється умова, тобто вираз після службового слова if
(результат повинен мати логічний тип, булевий);


2. якщо результат умови – TRUE (істина) то виконується then
<оператор1>; якщо результат умови FALSE – то виконується else
<оператор2>.


Оператори 1, 2 можуть бути будь-якого типу: умовні, складені, прості.


Умова може бути операцією відношення або логічною.


Операції відношення:
= , <>, >, <, >=, <=.


Логічні оператори:


Not – заперечення;


And – логічне "і";


Or – логічне "або";


Xor – "або", що виключає.


Приклад:


Вибір максимального із двох чисел:


if
x>y


then
max := x
else
max := 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) Для символьних масивів допускають операцію "+" – конкатенації

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


Приклад:


var S1 : array [1..8] of char;


S2 : array [1..5] of char;


begin


S1 := ’рядковий’;


S2 := ’масив’;


writeln (S1
+’ ’+S2
); {результат на екрані: Рядковий масив}


end.


!Особливість:!


1. в операторах присвоювання рядків символьним масивам необхідна точна відповідність довжини рядків і розмірів масивів;


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

для символьних масивів не допускається у правій частині присвоювання. Наприклад:


S := S1
+’ ’+S2
; {помилка}


У таких випадках необхідно використовувати рядки

, тобто рядкові типи даних.


4. Визначення рядкового типу даних


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


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


Для визначення рядкових даних використовується ідентифікатор STRING,
за яким у квадратних дужках вказується максимальна довжина рядка. Якщо значення не вказане, то по замовченню довжина рядка встановлюється 255 байт.


Приклад:


Line : string [80];


Line1 : string ;


Line2 : string [255].


В приведеному прикладі змінна Line
може мати будь-яку послідовність символів (кожен з яких має стандартний тип char) довільної довжини в межах від 0 до 80 символів; Line1
і Line2
– від 0 до 255 символів.


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


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


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


Формат:


1.
type


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


var


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


Або


2.
var


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


Приклад:


const address =
‘пл. Соборна, 1’;


type line = string [125];


var


S1 : Line;


S2 : string;


S3 : string [50];


Механізм динамічних рядків
реалізований в мові Турбо-Паскаль достатньо просто.


Для рядкових змінних пам’ять виділяється відповідно максимального значення, а використовується лише частина, яка реально зайнята символами рядка у даний час, тобто для N
символів виділяється N+1
байт пам’яті, із яких N
байт призначено для зберігання символів рядка, а 1 байт – для значення поточної довжини цього рядка:



Елементи рядка нумеруються цілими числами, починаючи з 1. Це іноді використовують для визначення поточної довжини рядка, наприклад:


1) line :=
‘ ’; {пустий рядок}


writeln (ORD (line [0] ));
{на екрані число 0}


2)
line : =‘ABCD’;


writeln (ORD (line [0] ));
{на екрані число 4}


Однак, для визначення поточної довжини рядка, як правило, використовують стандартну функцію length
, яке повертає ціле значення поточної довжини рядка. Але це ми розглянемо далі.


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


var line : string [4];


begin


line :=
‘дуже довгий рядок’; {на екрані: дуже}


writeln (line);


end.


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


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


Над рядковими даними виконують такі операції:


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


2. введення (Read);


3. виведення (Write);


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


5. порівняння (відношення).


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


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


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


Приклади:


1)
st := ‘a’+’b’;


st := st + ‘c’;


writeln (‘st = ‘, st) {
результат st =abc}


2)
var st : string [2];


begin


st :=’1’ + ‘2’ + ‘3’;


writeln (st)
{на екрані 12}


end.


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


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


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


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


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


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


Приклади:


1) ‘ " ‘ < ‘.’ TRUE


2) ‘A’ > ‘1’ TRUE


3) ‘AB’ = ‘A’ FALSE


4) ‘ABC’ > ‘AB’ TRUE


5) ‘12’ <’2’ TRUE


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


Функції:


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


2. COPY(st : STRING; index : INTEGER; count : INTEGER): STRING
або COPY (st, index, count).


Функція копіює (повертає) частину рядка, виділеного з рядка 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 : STRING; index, count : INTEGER)
або DELETE(st, index, count)

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


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


3. STR(X [:width[:decimals]]; st: STRING)
– процедура перетворює число Х
(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 };


Приклади:


var x : real;


y : integer;


st, st1 : string;


begin


st := concat (‘12’, ‘345’); {
рядок st
містить 12345}


st1 := copy (st, 3, Length(st)-2); {st1
містить 345}


insert(‘-’ , st1, 2); {
рядок st1
містить 3-45}


delete(st, pos(‘2’, st), 3); {
рядок st
містить 15}


str(pi : 6 : 2, st ); {
рядок st
містить 3,14}


val (‘3.1415’, x, y); {y
містить 2, х
беззмін}


end.


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

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Оператори алгоритмічної мови Паскаль Стандартні функції і оператори роботи з рядками

Слов:2619
Символов:22898
Размер:44.72 Кб.