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

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык украинский
Дата добавления 13.11.2010
Размер файла 45,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

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

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

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

Житомир 2010

План

1. Прості оператори

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

3. Символьні масиви

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

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

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

1. Прості оператори

Оператори мови Паскаль - це синтаксичні конструкції, які призначені для запису алгоритму (перетворення даних, порядок виконання операцій) в стилі структурного програмування.

Всі оператори повинні розділятись символом - ";".

Оператори мови Паскаль умовно поділяють на дві групи:

1) прості оператори;

2) структурні оператори, які містять один або декілька операторів, або структурних операторів.

Оператор присвоювання;

Оператори звертання до процедури (функції);

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

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

Формат оператора:

Оператор виконується так: обчислюється вираз (права частина) і отримане значення надається (присвоюється) ідентифікатору (змінній).

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

Наприклад: якщо var a, b, x: integer, то оператор присвоювання виконувати не можна.

Треба так:

var a, b : integer;

x : real;

Тоді буде вірно:

.

Приклади:

var name: string;

. . .

name : = `Іванов`;

var x, y: real;

. . .

x: = 5;

y: = x + 2;

Оператори звертання до процедури (функції) - призначені для активізації процедури (функції) та передачі їй заданих параметрів.

Формат оператора:

Розглянемо процедури введення та виведення даних, які можна викликати за допомогою операторів: read, readln, write, writeln.

write (вираз), writeln (вираз) - оператори запису або виведення;

read (список змінних), readln (список змінних) - читання або введення.

Приклади виведення:

x : = 1;

writeln(1+x);

writeln(x <=1);

на екрані з'явиться:

2

true

x: = 2;

writeln(1, x, x*x, x*x >2);

на екрані :

1 2 4 true

Використання рядкових констант, наприклад: `x =', `12' і т.п.

x : = 2;

writeln(`x = `, x,'; y = `, x*x);

На екрані: x = 2; y = 4.

Можна указати розмір поля для виводу значень виразу.

Якщо кількість символів менше, то виводяться пробіли, а якщо більше - то виводяться усі символи.

x: =12;

writeln(`x =', x : 4,'; y = `, x*x : 1);

На екрані

x =_ _ 12; y = 144 .

Приклади введення.

Як правило, для зручності перед оператором введення ставиться оператор виведення на екран запрошення:

writeln (`Ввести два цілих числа:');

readln (x1, x2);

На екрані запрошення:

Ввести два цілих числа:

Приклад програми привітання.

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;

Паскаль містить деякі додаткові засоби роботи з такими масивами:

Конкретні значення символьних масивів записують за допомогою зображення рядка та використання їх в присвоюванні та передачі параметрів:

S := `Приклад рядка';

Зображення рядка будується з символів масиву і обмежується апострофами.

Якщо необхідно задати апостроф, то його подвоюють {` " '}.

Допускають формування рядків з використанням десяткових кодів символів і спеціальних позначень: ( #7#17C^A^B…)

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

Приклад:

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. Це іноді використовують для визначення поточної довжини рядка, наприклад:

line := ` '; {пустий рядок}

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

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). Інакше останні символи будуть відкинуті.

Приклади:

st := `a'+'b';

st := st + `c';

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

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.

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


Подобные документы

  • Структура (класифікація) типів даних мови T. Pascal: прості, структуровані; стандартні модулі, їх призначення, символьні масиви. Визначення рядкового типу даних, основні операції. Стандартні засоби обробки рядків: присвоювання, порівняння, з’єднання.

    реферат [32,3 K], добавлен 13.11.2010

  • Групи та призначення операторів мови Pascal. Характеристика операторів простих, структурних, складених, умовних. Особливості їх виконання. Обов’язкові вимоги до них. Відмінності й гарного стилю роботи з циклічними операторами while, repeat і for.

    лекция [590,8 K], добавлен 24.07.2014

  • Тип як множина допустимих значень і операцій над об’єктами, формат його внутрішнього представлення. Класифікація типів даних; масиви, записи, файли, стандартні модулі. Функції і оператори роботи з рядками, засоби їх обробки: процедури і функції.

    реферат [32,3 K], добавлен 13.11.2010

  • Математичний опис задачі виконання символьних операцій з многочленами, розробка алгоритмів її реалізації і сама реалізація на одній з версій алгоритмічної мови Pascal, контрольна перевірка правильності. Тестування програми на екстремальних вхідних даних.

    контрольная работа [24,1 K], добавлен 20.09.2010

  • Загальні відомості про мову програмування, історія створення та використовування. Програма мовою Паскаль складається з лексем і символів – розділювачів. Робота з масивами, створення алгортимів. Складання програм з використанням процедур та функцій.

    реферат [18,3 K], добавлен 22.10.2010

  • Етапи історичного розвитку алгоритмічної мови. Ознайомлення із основними символами, службовими словами, стандартними ідентифікаторами, функціями, виразами та процедурами мови програмування Паскаль. Розгляд графічних режимів дисплейних адаптерів.

    реферат [59,2 K], добавлен 13.11.2010

  • Характерні особливості мови Паскаль, її сутність. Характеристика процедур та операцій програми з пошуку книги або автора, їх видаленні, повідомленні про помилку. Автоматичне створення файлів по адресу "BookDataBase.txt". Програмний код і лістинг програми.

    контрольная работа [169,0 K], добавлен 12.01.2012

  • Базові типи змінних. Елементарний ввід-вивід. Умовні оператори та оператори множинного вибору. Основні функції вводу даних із клавіатури scanf, gets, getchar. Визначення основних (базових) типів даних. Вивід повідомлення при невірно заданому ключі.

    контрольная работа [74,6 K], добавлен 03.10.2010

  • Дії над елементами масиву. Структурні, умовні та складові оператори. Привласнення об'єктного типу. Засоби перенесення результатів із програми Паскаля в редактор Word. Програмні реалізації алгоритму. Ідентифікатори, підпрограми: процедури і функції.

    курсовая работа [64,3 K], добавлен 20.10.2014

  • Характеристика мови програмування VBA (Visual Basic for Application): можливості й засоби. Використання редактора Visual Basic. Створення та виконання VBA-програм. Типи даних, змінні й константи, операції й вирази. Керуючі оператори, процедури й функції.

    реферат [29,9 K], добавлен 28.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.