Реферат по предмету "Информатика"


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

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


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


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


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


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


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



Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.